【LeetCode】 2 兩數相加
阿新 • • 發佈:2018-11-29
解題思路:
1 每個節點相加的結果需要一個進位flag,注意置空。
2 以前的思路是當某個連結串列加完之後,再在結果上接上另一個連結串列即可,但是此題存在連續進位問題。
3 所以讓指到結尾的連結串列指標(為null)陪跑即可,即如果null則加0,這樣可以保持程式的一致性。
程式碼:
class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int flag = 0; ListNode result = new ListNode(-1); ListNode p = l1, q = l2, r = result; while (p != null || q != null){ int x = p == null? 0:p.val; int y = q == null? 0:q.val; int sum = x + y + flag; r.next = new ListNode(sum % 10); r = r.next; flag = sum / 10; if (p != null) p = p.next; if (q != null) q = q.next; } //如果最後還進位了 if (flag > 0){ r.next= new ListNode(1); } return result.next; } }