本篇文章為大家展示了golang中怎么利用leetcode 實現鏈表求和,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
給定兩個用鏈表表示的整數,每個節點包含一個數位。
這些數位是反向存放的,也就是個位排在鏈表首部。
編寫函數對這兩個整數求和,并用鏈表形式返回結果。
示例:
輸入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
輸出:2 -> 1 -> 9,即912
進階:假設這些數位是正向存放的,請再做一遍。
示例:
輸入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295
輸出:9 -> 1 -> 2,即912
解題思路
1,這個題目需要注意一個細節,進位標記
2,有與個位在前,所以比較簡單
3,需要注意,兩個鏈表的長短不一致
4,對于1+9999情況需要特殊處理
代碼實現
/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {if l1==nil{return l2}if l2==nil{return l1}r:=new(ListNode)tr:=rt1:=l1t2:=l2flag:=0tr.Val=(t1.Val+t2.Val+flag)%10flag=(t1.Val+t2.Val+flag)/10for t1.Next!=nil && t2.Next!=nil{tr.Next=new(ListNode)tr=tr.Nextt1=t1.Nextt2=t2.Nexttr.Val=(t1.Val+t2.Val+flag)%10flag=(t1.Val+t2.Val+flag)/10}for t1.Next!=nil{tr.Next=new(ListNode)tr=tr.Nextt1=t1.Nexttr.Val=(t1.Val+flag)%10flag=(t1.Val+flag)/10}for t2.Next!=nil{tr.Next=new(ListNode)tr=tr.Nextt2=t2.Nexttr.Val=(t2.Val+flag)%10flag=(t2.Val+flag)/10}if flag!=0{tr.Next=new(ListNode)tr=tr.Nexttr.Val=flag}return r}
上述內容就是golang中怎么利用leetcode 實現鏈表求和,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。