資料結構 -- 簡單圖的實現與遍歷 (Java)
阿新 • • 發佈:2021-08-13
2.兩數相加
題目描述
給你兩個 非空 的連結串列,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。
請你將兩個數相加,並以相同形式返回一個表示和的連結串列。
你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
思路
兩條連結串列直接原地相加,順便檢查是否要進位。
程式碼
public static ListNode02 addTwoNumbers(ListNode02 l1, ListNode02 l2){ ListNode02 head = l1; while (l1.next != null && l2.next != null){ l1.val += l2.val; //進位判斷 if (l1.val>= 10){ l1.val %= 10; l1.next.val++; } l1 = l1.next; l2 = l2.next; } //最後一個數 l1.val += l2.val; if (l1.next == null){ l1.next = l2.next; } //直接從末尾開始 ListNode02 ptr = l1; while (ptr != null){ if (ptr.val>=10){ ptr.val %= 10; if (ptr.next != null){ ptr.next.val++; }else{ ptr.next = new ListNode02(1); break; } } ptr = ptr.next; } return head; }