力扣第2題兩數相加

2021-09-26 06:55:42 字數 1525 閱讀 3913

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 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 ...