其他分享
首页 > 其他分享> > LeetCode-addTwoNumbers

LeetCode-addTwoNumbers

作者:互联网

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        // 思路: 在原链表l1上逆序相加,得到逆序的相加链表
        // 要考虑:(1) 进位(尤其是最后有进位,需要新建一个Listnode); (2) 链表长度不对齐
        // 时空分析:(1) O(max(len(l1),len(l2))); (2) O(1)
        // 返回: 链表头指针
        ListNode p1 = l1;
        ListNode p2 = l2;
        ListNode res = l1;
        int carry = 0;
        int sum = 0;
        int temp = 0;
        while(p1.next!=null && p2.next!=null){
            temp = p1.val+p2.val+carry;
            sum = temp%10;
            carry = temp/10;
            p1.val = sum;
            p1 = p1.next;
            p2 = p2.next;
        }
        // 两个链表当前的数字(包括两个链表长度都为1的情况)
        temp = carry+p1.val+p2.val;
        sum = temp%10;
        carry = temp/10;
        p1.val = sum;

        if(p2.next!=null){
            // 如果len(l2)>len(l1)
            p1.next=p2.next;
        }
        while(p1.next!=null&&carry!=0){
            p1 = p1.next;
            temp = p1.val+carry;
            sum = temp%10;
            carry = temp/10;
            p1.val =sum;
        }
        if(carry!=0){
            p1.next = new ListNode(carry,null);
        }
    return res;
    }

 

标签:p2,p1,val,sum,next,addTwoNumbers,carry,LeetCode
来源: https://www.cnblogs.com/helloworldToDu/p/15831091.html