您好,登錄后才能下訂單哦!
本篇文章為大家展示了golang中怎么利用leetcode 實(shí)現(xiàn)鏈表求和,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
給定兩個(gè)用鏈表表示的整數(shù),每個(gè)節(jié)點(diǎn)包含一個(gè)數(shù)位。
這些數(shù)位是反向存放的,也就是個(gè)位排在鏈表首部。
編寫(xiě)函數(shù)對(duì)這兩個(gè)整數(shù)求和,并用鏈表形式返回結(jié)果。
示例:
輸入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
輸出:2 -> 1 -> 9,即912
進(jìn)階:假設(shè)這些數(shù)位是正向存放的,請(qǐng)?jiān)僮鲆槐椤?/p>
示例:
輸入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295
輸出:9 -> 1 -> 2,即912
解題思路
1,這個(gè)題目需要注意一個(gè)細(xì)節(jié),進(jìn)位標(biāo)記
2,有與個(gè)位在前,所以比較簡(jiǎn)單
3,需要注意,兩個(gè)鏈表的長(zhǎng)短不一致
4,對(duì)于1+9999情況需要特殊處理
代碼實(shí)現(xiàn)
/**
* 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:=r
t1:=l1
t2:=l2
flag:=0
tr.Val=(t1.Val+t2.Val+flag)%10
flag=(t1.Val+t2.Val+flag)/10
for t1.Next!=nil && t2.Next!=nil{
tr.Next=new(ListNode)
tr=tr.Next
t1=t1.Next
t2=t2.Next
tr.Val=(t1.Val+t2.Val+flag)%10
flag=(t1.Val+t2.Val+flag)/10
}
for t1.Next!=nil{
tr.Next=new(ListNode)
tr=tr.Next
t1=t1.Next
tr.Val=(t1.Val+flag)%10
flag=(t1.Val+flag)/10
}
for t2.Next!=nil{
tr.Next=new(ListNode)
tr=tr.Next
t2=t2.Next
tr.Val=(t2.Val+flag)%10
flag=(t2.Val+flag)/10
}
if flag!=0{
tr.Next=new(ListNode)
tr=tr.Next
tr.Val=flag
}
return r
}
上述內(nèi)容就是golang中怎么利用leetcode 實(shí)現(xiàn)鏈表求和,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。