LeetCode挑戰熱題 HOT 100 兩數相加

2021-10-16 14:06:38 字數 1767 閱讀 1071

話不多說直接上題

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class

solution

else

if(l1 != null)

else

if(l2 != null)

if(listnodenewbody.val >=10)

else

else

} listnodenewbody = listnodenewbody.next;

}return listnodenew;

}}

這道題就是兩個鍊錶從左-》右順序相加,逢10進1,補0,先拿兩個長度相等的鍊錶,從左(頭位置)順序開始,首先定義兩個鍊錶結構乙個作為頭節點,乙個作為身體節點,開始初始化兩個節點指向同乙個新new出來的節點

這是l1,l2兩個鍊錶表示形式,注意:圖可能我畫的有頭節點,但是這個問題裡面是沒有頭節點的,l1.val就是2,l1.next等於4的那個節點

相同長度就開始分析鍊錶中的值怎麼取了,開始同時取第乙個節點的值:就是

l1不為空,l2同時也不為空,

l1.val 2

l2.val 5

兩個值相加:7

判斷相加的值是否大於等於10:

是:listnodenewbody.val = listnodenewbody.val - 10;

listnodenewbody.next = new listnode(listnodenewbody.val%10)+1,null)

否:listnodenewbody.next = new listnode(0,null)

最後值7賦值給listnodenewbody.val

l1 = l1.next,l2 = l2.next,l1,l2同時指向各自對應的第二個節點

判斷l1或者l2鍊錶的下乙個節點是否為空,有乙個不為空繼續執行

l1.val 4

l2.val 6

兩個值相加:10

判斷相加的值是否大於等於10:

是:listnodenewbody.val = listnodenewbody.val - 10;

listnodenewbody.next = new listnode(listnodenewbody.val%10)+1,null)

; 否:listnodenewbody.next = new listnode(0,null)

;最後listnodenewbody.val - 10賦值給listnodenewbody.val,

l1 = l1.next,l2 = l2.next,l1,l2同時指向各自對應的第三個節點

依次類推。最後的結果就是正確值。

leetcode熱題HOT100 78 子集

題目78 子集 給你乙個整數陣列 nums 陣列中的元素 互不相同 返回該陣列所有可能的子集 冪集 解集 不能 包含重複的子集。你可以按 任意順序 返回解集。解答 class solution def subsets self,nums list int list list int res for ...

LeetCode熱題 HOT 100兩數之和

開篇今天興趣來潮打算去leetcode刷刷演算法題,為面試準備,忽然看到頁面的leetcode 熱題 hot 100,然後就點進去了,然後就有了這個文章!兩數之和 給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。你可...

熱題HOT 100 簡單題 4 6

53.最大子序和 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解...