給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。示例:如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
個人解法
因為需要相加的兩個數逆序輸入,逆序輸出。
個人問題出現地方:
由於當我們通過鍊錶的指標來指向鍊錶節點時,如果我們指到的是節點的末尾null
,此時直接賦值是不可以的。例如像下面這樣
listnode before_node = l1;
// 用來遍歷到l1鍊錶的末尾
while
(l1 != null)
// 此時while迴圈出來的 l1 , 便應該是指向了鍊錶的最末尾
// 此時before_node 指向的是最後乙個有資料的結點,在其後面插入即可
before_node.next =
newlistnode(0
);
圖示:
需要找到末尾之前的結點,在讓其指向新節點
最終**如下
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
else
// 賦值結果
l1.val = add_res;
// 為後續鏈結新節點做準備
before_l1 = l1;
// 賦值為下乙個結點
l1 = l1.next;
l2 = l2.next;
}// 因為是以l1為結果的, 所以如果進製為1, 才有必要繼續運算, 否則沒有必要運算
if(res ==1)
else
l1.val = add_res;
// 為後續鏈結新節點做準備
before_l1 = l1;
l1 = l1.next;}}
// 如果l1先為空, l2不為空的話
while
(l2 != null)
// 如果有進製
if(res ==1)
else
l1.val = add_res;
// system.out.println(", val = " + l1.val);
} l1 = l1.next;
l2 = l2.next;
}// 如果還有進製
if(res ==1)
return res_list;
}}
力扣 2 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。將兩個鍊錶補成長度一致的,短的在後邊補零。...
力扣2 兩數相加
2.兩數相加 難度 中等 描述 給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 1 輸入 l1 2,4,3 l2...
力扣刷題筆記 2 兩數相加
題目2.兩數相加 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 ...