這一題最後沒有做出來,答案來自 題解的精解答案
先看題目吧:
思考:342 +462 放在 鍊錶中就是(2,4,3)和 (2,6,4),當我們對第乙個鍊錶元素進行操作的時候,就是對它的個位數操作,然後如果超過10就進製,這是符合我們平常的思考習慣的,你就不要再倒過來了。然後還要考慮,題目並沒有說明 兩個的位數是一樣的,所以 假如說 232+46 要補成 232+046 ,也就是每一次迴圈完之後要判斷 ,下個元素是否為空。此外比較需要注意的是,你的list的定義。
以下是答案。
/**
* definition for singly-linked list.
* public class listnode
* }*/class solution
}
class solution
if(carry == 1)
return pre.next;}}
參考:
listnode的結構在注釋中已經給了
public class listnode //賦值鍊錶的值
}
中心思想 carry用來表示 進製, sum用來表示 真正存到鍊錶的值 ,例如9+ 7 =16 ,carry 就是 1 ,sum就是6 ,然後它的賦值是這樣賦值的。
cur.next = new listnode(sum % 10);
於是這個 值就會存到 cur中 , 然後就是迴圈條件,它們分別是 l1向後推移一位 ,l2向後推移一位, cur向後推移一位。
當他們到頂了之後,此時跳出while 迴圈,看有沒有進製1 ,如果有的話,還需要給cur 賦值乙個最高位 1
兩個已經逆序的鍊錶相加
題目如下 和acm大數相加問題類似,要處理好進製問題 給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 l1...
leetcode 鍊錶相加
給定兩個用鍊錶表示的整數,每個節點包含乙個數字。這些數字是反向存放的,也就是個位排在鍊錶首部。編寫函式對這兩個整數求和,並用鍊錶形式返回結果。示例 輸入 7 1 6 5 9 2 即617 295 輸出 2 1 9,即912 採用原地演算法,比較兩個鍊錶長度,如果長度一致,那麼鍊錶相加到任一鍊錶,計算...
leetcode 2鍊錶相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...