這次講解的題目是乙個中等題,和鍊錶的資料結構有關。接下來上題目:
鍊錶的結構:
/**
* definition for singly-linked list.
* public class listnode
* }*/
思路如下:
話不多說先看圖!
由圖可知我們進行342+456相加的時候是從head頭開始相加,一直到尾部結束的,因為head的頭所代表的的val值正好就是我們的最低位,所以我們解題的思路就是:兩鍊錶從頭節點開始向後遍歷,定義乙個新的鍊錶來儲存當前位置上數的和,並儲存進製的值,再下一次迴圈的時候將進製值加上,迴圈!迴圈的結束條件就是l1鍊錶和l2鍊錶的next域均為null!
思路圖如下圖!
1.新定義的鍊錶必須要有對它的引用(可以理解為指標)為什麼呢?因為在給鍊錶新增值的時候,我們會對它進行重新複製為next的操作,那麼就是去了對頭結點的引用了。
2.什麼時候要對list進行新增下乙個結點? 就是當當前對應的l1和l2有值得時候。
3.如果是1234+234這種會發生什麼情況呢?假設l1是1234,l2是234,那麼到千位的時候後出現1+null的情況,程式必然報錯,所以我們進行的操作是如果位數不同,那麼當前的位置上value值為0。
} //如果最高位相加造成了進製,那麼up一定為1,因為兩個是的next都為null,就跳出了!
if(up==1)
//因為通過point指標來操縱的鍊錶賦值,所以res的next就是需要返回的值!
return res.next;}}
leetcode刷題之544 兩數相加2
給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3 5 6 4 ...
leetCode刷題 2 兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 複製 題目的前提,將數字使用鏈結來儲存,比如...
Leetcode刷題(2 兩數相加)
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...