码迷,mamicode.com
首页 > 其他好文 > 详细

2. Add Two Numbers

时间:2016-01-28 02:04:13      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

没什么特别的。不在原链表上操作,把每一位保存到一个新的链表里面。

程序大概分四段:

1. 当l1和l2都不为空的时候

2. 当l1不为空的时候

3. 当l2不为空的时候

4. 当carry!=0的时候,再建一个新的节点放在末尾

 

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode res = new ListNode(-1);
        ListNode head = res;
        if(l1 == null || l2 == null) {
            return res.next;
        }
        int carry = 0;
        while(l1 != null && l2 != null) {
            int sum = l1.val + l2.val + carry;
            if(sum >= 10) {
                sum -= 10;
                carry = 1;
            } else {
                carry = 0;
            }
            ListNode nextNode = new ListNode(sum);
            res.next = nextNode;
            res = res.next;
            l1 = l1.next;
            l2 = l2.next;
        }
        while(l1 != null) {
            int sum = l1.val + carry;
            if(sum >= 10) {
                sum -= 10;
                carry = 1;
            } else {
                carry = 0;
            }
            ListNode nextNode = new ListNode(sum);
            res.next = nextNode;
            res = res.next;
            l1 = l1.next;
        }
        while(l2 != null) {
            int sum = l2.val + carry;
            if(sum >= 10) {
                sum -= 10;
                carry = 1;
            } else {
                carry = 0;
            }
            ListNode nextNode = new ListNode(sum);
            res.next = nextNode;
            res = res.next;
            l2 = l2.next;
        }
        if(carry != 0) {
            ListNode nextNode = new ListNode(1);
            res.next = nextNode;
        }
        return head.next;
    }

 bug记录:

1.想加的时候,移动了res,但是忘了移动l1和l2

既记得res = res.next, 但是忘了l1 = l1.next, l2 = l2.next

2.最终return的时候是返回head.next不是head

2. Add Two Numbers

标签:

原文地址:http://www.cnblogs.com/warmland/p/5165035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!