Go 2. 两数相加
生活随笔
收集整理的這篇文章主要介紹了
Go 2. 两数相加
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你兩個 非空 的鏈表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,并且每個節點只能存儲 一位 數字。
請你將兩個數相加,并以相同形式返回一個表示和的鏈表。
你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
鏈接:https://leetcode-cn.com/problems/add-two-numbers
package mainimport "fmt"func main() {l3 := ListNode{3, nil}l2 := ListNode{Val: 4, Next: &l3}l1 := ListNode{Val: 2, Next: &l2}l6 := ListNode{Val: 4, Next: nil}l5 := ListNode{Val: 6, Next: &l6}l4 := ListNode{Val: 5, Next: &l5}// 輸入:l1 = [2,4,3], l2 = [5,6,4]// 輸出:[7,0,8]// 解釋:342 + 465 = 807.fmt.Printf("兩數相加: %+v", addTwoNumbers(&l1, &l4)) }/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {if l1 == nil && l2 == nil {return nil}head := &ListNode{0, nil}current := head//進位carry := 0//l1 = [2,4,3], l2 = [5,6,4]//FOR_STARTfor l1 != nil || l2 != nil {var x, y intif l1 == nil {x = 0} else {x = l1.Val}if l2 == nil {y = 0} else {y = l2.Val}// 這里有點繞哈, 給 current 的 Next 賦值// % 是求余數, 不是整除 /, 比如 4 + 6 + 0 = 10, 10 % 10 = 0 符合; 10 / 10 = 1 顯然不符合相加規范current.Next = &ListNode{(x + y + carry) % 10, nil}// 讓 current == 剛才賦值的 Nextcurrent = current.Nextcarry = (x + y + carry) / 10if l1 != nil {l1 = l1.Next}if l2 != nil {l2 = l2.Next}}//FOR_EDN//其實是逆序的708, 7是頂, 8是底if carry > 0 {current.Next = &ListNode{carry % 10, nil}}return head.Next }type ListNode struct {Val intNext *ListNode }總結
以上是生活随笔為你收集整理的Go 2. 两数相加的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PicGo github配置
- 下一篇: Go 1.两数之和