go語言LeeCode刷題記:2. 兩數相加
阿新 • • 發佈:2019-01-03
給出兩個 非空 的連結串列用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回一個新的連結串列來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -> 0 -> 8 原因:342 + 465 = 807
答案:
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { result := &ListNode{} lastNode := result temp := 0 for l1 != nil || l2 != nil || temp != 0 { //相加處理 var v1, v2 int if l1 != nil { v1 = l1.Val //移位 l1 = l1.Next } else { v1 = 0 } if l2 != nil { v2 = l2.Val //移位 l2 = l2.Next } else { v2 = 0 } sum := v1 + v2 + temp temp = sum / 10 bitNum := sum % 10 //將資料新增到末端節點 lastNode.Val = bitNum //是否準備新節點 if l1 != nil || l2 != nil || temp != 0 { lastNode.Next = &ListNode{} } else { lastNode.Next = nil } lastNode = lastNode.Next } return result }