1. 程式人生 > >【探索-中級演算法】兩數相加

【探索-中級演算法】兩數相加

在這裡插入圖片描述

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if (l1==null) return l2;
        else if (l2==null) return l1;


        ListNode head;

        ListNode node = new ListNode(0);
        head = node;
        int tmp = 0;//表示進位
        do {
            tmp = l1.val + l2.val + tmp;
node.next = new ListNode(tmp % 10); tmp = tmp / 10; l1 = l1.next; l2 = l2.next; node = node.next; } while (l1 != null && l2 != null); while (l1!=null) { tmp = tmp + l1.val; node.next = new ListNode
(tmp%10); tmp = tmp / 10; l1 = l1.next; node = node.next; } while (l2!=null) { tmp = tmp + l2.val; node.next = new ListNode(tmp%10); tmp = tmp / 10; l2 = l2.next; node = node.next; } if
(tmp > 0) { node.next = new ListNode(1); } ListNode result = head.next; head.next = null; return result; }

比較簡單,只需要注意 l1l2 長度一樣的情況,此時第一個 do-while 迴圈會同時使得 l1l2null,此時如果產生了進位,則還需要處理,如 (5 , 5)

以及長度不一致,但是 tmp 進位與之後長的一組結合,會一直產生進位的情況,如 (9 , 9)