`
flyingforce
  • 浏览: 922 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

LeetCode Add Two Numbers

 
阅读更多


You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

看了半天没搞清楚题目意思, 英语不够好,后来参考了论坛一个人的翻译才懂了,好在代码写得还算漂亮

/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode newHead=null;
        ListNode prevNode = null;
        boolean noL1=false,noL2=false;
        int remain =0;
        while((l1!=null)||(l2!=null)){
            int l1val = getVal(l1,noL1);
            int l2val = getVal(l2,noL2);
            int val = l1val+l2val+remain;
            if(val>=10){
                val=val%10;
                remain =1;
            }else{
                remain =0;
            }
            ListNode newNode = new ListNode(val);
            if(prevNode==null){
                newHead = newNode;
                prevNode =newNode;
            }else{
                prevNode.next =newNode;
                prevNode= newNode;
            }
            if(l1!=null){l1=l1.next;}else{noL1=true;}
            if(l2!=null){l2=l2.next;}else{noL2=true;}
        }
        if(remain==1){
            ListNode newNode = new ListNode(1);
            prevNode.next=newNode;
        }
       
        return newHead;
    }
    private int getVal(ListNode l, boolean noL){
        if(noL) return 0;
        if(l==null) return 0;
        return l.val;
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics