題目要求我們模擬大數加法 注意點: 1.因為存儲是反過來的,即數字342存成2->4->3,所以要注意進位是向后的; 2.鏈表l1或l2為空時,直接返回,這是邊界條件,省掉多余的操作; 3.鏈表l1和l2長度可能不同,因此要注意處理某個鏈表剩余的高位; 4.2個數相加,可能會產生最高位的進位,因此要注意在完成以上1-3的操作后,判斷進位是否為0,不為0則需要增加結點存儲最高位的進位。 解題代碼如下
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode result = null; ListNode header = null; int be_flag = 0; if (l1 == null) { return l2; } if (l2 == null) { return l1; } if (l1 == null && l2 == null) { return null; } while (l1 != null || l2 != null||be_flag!=0) { int val = 0; if (l1 != null) { val += l1.val; } if (l2 != null) { val += l2.val; } if (be_flag > 0) { val += 1; be_flag--; System.out.新聞熱點
疑難解答