diff --git a/leetcode/0002.Add-Two-Numbers/2. Add Two Numbers.go b/leetcode/0002.Add-Two-Numbers/2. Add Two Numbers.go index 5854bf65..398fb7e2 100644 --- a/leetcode/0002.Add-Two-Numbers/2. Add Two Numbers.go +++ b/leetcode/0002.Add-Two-Numbers/2. Add Two Numbers.go @@ -16,36 +16,24 @@ type ListNode = structures.ListNode */ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { - if l1 == nil || l2 == nil { - return nil - } - head := &ListNode{Val: 0, Next: nil} - current := head - carry := 0 - for l1 != nil || l2 != nil { - var x, y int + head := &ListNode{Val: 0} + n1, n2, carry, current := 0, 0, 0, head + for l1 != nil || l2 != nil || carry != 0 { if l1 == nil { - x = 0 + n1 = 0 } else { - x = l1.Val - } - if l2 == nil { - y = 0 - } else { - y = l2.Val - } - current.Next = &ListNode{Val: (x + y + carry) % 10, Next: nil} - current = current.Next - carry = (x + y + carry) / 10 - if l1 != nil { + n1 = l1.Val l1 = l1.Next } - if l2 != nil { + if l2 == nil { + n2 = 0 + } else { + n2 = l2.Val l2 = l2.Next } - } - if carry > 0 { - current.Next = &ListNode{Val: carry % 10, Next: nil} + current.Next = &ListNode{Val: (n1 + n2 + carry) % 10} + current = current.Next + carry = (n1 + n2 + carry) / 10 } return head.Next } diff --git a/website/content/ChapterFour/0002.Add-Two-Numbers.md b/website/content/ChapterFour/0002.Add-Two-Numbers.md index 423128df..c30fb0ef 100644 --- a/website/content/ChapterFour/0002.Add-Two-Numbers.md +++ b/website/content/ChapterFour/0002.Add-Two-Numbers.md @@ -51,37 +51,26 @@ package leetcode * Next *ListNode * } */ + func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { - if l1 == nil || l2 == nil { - return nil - } - head := &ListNode{Val: 0, Next: nil} - current := head - carry := 0 - for l1 != nil || l2 != nil { - var x, y int + head := &ListNode{Val: 0} + n1, n2, carry, current := 0, 0, 0, head + for l1 != nil || l2 != nil || carry != 0 { if l1 == nil { - x = 0 + n1 = 0 } else { - x = l1.Val - } - if l2 == nil { - y = 0 - } else { - y = l2.Val - } - current.Next = &ListNode{Val: (x + y + carry) % 10, Next: nil} - current = current.Next - carry = (x + y + carry) / 10 - if l1 != nil { + n1 = l1.Val l1 = l1.Next } - if l2 != nil { + if l2 == nil { + n2 = 0 + } else { + n2 = l2.Val l2 = l2.Next } - } - if carry > 0 { - current.Next = &ListNode{Val: carry % 10, Next: nil} + current.Next = &ListNode{Val: (n1 + n2 + carry) % 10} + current = current.Next + carry = (n1 + n2 + carry) / 10 } return head.Next }