Java进阶程序员首页投稿(暂停使用,暂停投稿)

LeetCode解法从慢到快——2. Add Two Numbe

2017-08-16  本文已影响140人  KaelQ

1.普通思路

开始一个循环,当两个链表最后一个元素的next元素为null时结束循环。
在这个循环中,分为三种情况:

  1. 两个链表都有值,相加即可。
  2. 只有一个链表有值,取之即可。
  3. 两个链表都没有值,跳出循环。

有一个特殊情况,相加大于等于10的数,需要减去10,然后向next进1。

  public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int addOne=0;
        ListNode l3=new ListNode(0);
        ListNode q=l1,p=l2,r=l3;
        while(l1!=null && l2!=null){
            if(l1.next!=null||l2.next!=null){
                 r.next=new ListNode(0);
            }
            if(l1==null && l2!=null){
                r.val=l2.val;
                l2=l2.next;
            }else if(l2==null && l1!=null){
                r.val=l1.val;
                l1=l1.next;
            }else {
                r.val=l1.val+l2.val;
                l2=l2.next;
                l1=l1.next;
            }
            if(addOne==1){
                r.val++;
                addOne=0;
            }
            if(r.val>=10){
                r.val=r.val-10;
                addOne=1;
            }
            r=r.next;
        }
        return l3;
    }

2. 优化思路

3. 再次优化

上一篇 下一篇

猜你喜欢

热点阅读