力扣-链表-2 两数相加

思路

两个指针同时遍历,维护一个进位值,同时还要维护第一个链表的前序,如果第二个链表比第一个长的时候,利用这个前序指针把第二个链表多余的内容,添加到第一个链表的末尾

代码

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int value = 0;
        ListNode cur1 = l1, cur2 = l2;
        ListNode pre1 = null;
        while(cur1 != null && cur2 != null){
            int temp = cur1.val + cur2.val + value;
            value = temp / 10;
            cur1.val = temp % 10;
            pre1 = cur1;
            cur1 = cur1.next;
            cur2 = cur2.next;
        }
        if(cur1 == null && cur2 != null){
            pre1.next = cur2;
            cur1 = cur2;
        }
        while(value != 0 || cur1 != null){
            if(cur1 != null){
                int temp = cur1.val + value;
                value = temp / 10;
                cur1.val = temp % 10;
                pre1 = cur1;
                cur1 = cur1.next;
            }else{
                ListNode temp = new ListNode(value%10);
                value = value / 10;
                pre1.next = temp;
                pre1 = temp;
                cur1 = null;
            }
        }
        

        return l1;
    }
}

你可能感兴趣的:(力扣,#,链表,leetcode,链表,算法)