2. 两数相加

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


注意的点:就是如果链表都遍历完了,还有进位,就要单独创建一个节点保存进位。

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode dummyHead = new ListNode(-1);
        ListNode cur = dummyHead;

        int carry = 0;
        while(l1 != null || l2 != null) {
            // 复用这块逻辑,判断null与非null的情况
            int num1 = l1 != null ? l1.val : 0;
            int num2 = l2 != null ? l2.val : 0;
            
            // 当前的和记住需要加上后一位的进位。
            int sum = num1+num2+carry;
            cur.next = new ListNode(sum%10);
            cur = cur.next;
            carry = sum/10;
            // 最后向后移动的时候,注意null的情况
            l1 = l1 != null ? l1.next : null;
            l2 = l2 != null ? l2.next : null;
        }
        
        // 遍历完节点后,如果还有进位信息,还需要新创建一个节点;
        // 123,888这样的数相加,就是多出来的进位。
        if(carry != 0) {
            cur.next = new ListNode(1);
        }

        return dummyHead.next;

    }
posted @ 2022-02-25 15:56  一颗青菜  阅读(2)  评论(0)    收藏  举报