leetcode演算法 兩數相加

2021-10-09 18:45:19 字數 1516 閱讀 7149

解析:本題兩種方式解決

一種是算出兩數相加得出和,再轉化為鍊錶,但是這樣的話和可能會很大就回導致得到的和無法接受要用到long型別甚至long long型別;

另一種方式:我們可以注意到我們只需將兩個鍊錶同時遍歷相加將得到的和mod10即可插入到新的鍊錶中,但由於會和會大於10而進1所以我們要設定乙個變數carry用來攜帶進製的數;這樣我們把所有可能列出來如下:

1.鍊錶l1比鍊錶l2長,此時l2先結束遍歷,當然不能忘了carry

if

((l2==null)

&&(l1!=null)

)

2.鍊錶l2比鍊錶l1長,此時l1先結束遍歷,當然還有carry

if

((l1==null)

&&(l2!=null)

)

3.當l1和l2一樣長度或者在l1和l2不同長度的時候,前面的遍歷是l1和l2同時在遍歷,同時不能忘了carry

if

((l1!=null)

&&(l2!=null)

)

4.當全部遍歷完成,此時l1和l2均指向空,此時要盤查carry

if

((l1==null)

&&(l2==null)

)}

以上是在遍歷的時候會出現的四種情況,這四種情況要全部不相交,所以要加入else,讓他們不能並列執行,原因是l1和l2的指標遍歷;

但此時還不行,應為鍊錶的新建如果在此處的話會在最後生成乙個空值的節點,所以我們要判斷是否需要生成下乙個接收值的節點;

注意此處的if和上面的if並列存在,因為不管上面出現的是那種情況,都要去判斷是否生成新的節點。

if

((l1==null)

&&(l2==null)

&&(carry==0)

)else

以上我們最後得到的鍊錶result即為最終結果。

附**:

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

elseif(

(l1==null)

&&(l2!=null)

)elseif(

(l2==null)

&&(l1!=null)

)elseif(

(l1==null)

&&(l2==null))}

if((l1==null)

&&(l2==null)

&&(carry==0)

)else

}return result;

}}

leetcode演算法 兩數相加

這一次真的 了,寫了好久卻忽略了int溢位,還是官方的答案簡介直接 arithmetic the sum of two numbers name nanfang time 2019 12 22 content 這是我自己寫的,我是把數算出來然後加一起的 public static listnode ...

leetcode 兩數相加(演算法)

兩數之和 給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。看到題目我首先想到的是將目標值 target 拆分,將目標值變成0 target,1 target 1 target 2 target target 2 由於第一次做演...

LeetCode 中級演算法 兩數相加

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807一貫的愚蠢暴力解法 definition for...