63 lines
961 B
Go
63 lines
961 B
Go
package top100liked
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
// https://leetcode.cn/problems/add-two-numbers/description/?envType=study-plan-v2&envId=top-100-liked
|
|
|
|
type ListNode struct {
|
|
Val int
|
|
Next *ListNode
|
|
}
|
|
|
|
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
|
dummy := &ListNode{}
|
|
p := dummy
|
|
carry := 0
|
|
for l1 != nil || l2 != nil || carry > 0 {
|
|
sum := carry
|
|
if l1 != nil {
|
|
sum += l1.Val
|
|
l1 = l1.Next
|
|
}
|
|
if l2 != nil {
|
|
sum += l2.Val
|
|
l2 = l2.Next
|
|
}
|
|
p.Next = &ListNode{Val: sum % 10}
|
|
p = p.Next
|
|
carry = sum / 10
|
|
}
|
|
return dummy.Next
|
|
}
|
|
|
|
func Test(t *testing.T) {
|
|
input1 := &ListNode{
|
|
Val: 2,
|
|
Next: &ListNode{
|
|
Val: 4,
|
|
Next: &ListNode{
|
|
Val: 3,
|
|
Next: nil,
|
|
},
|
|
},
|
|
}
|
|
input2 := &ListNode{
|
|
Val: 5,
|
|
Next: &ListNode{
|
|
Val: 6,
|
|
Next: &ListNode{
|
|
Val: 4,
|
|
Next: nil,
|
|
},
|
|
},
|
|
}
|
|
output := addTwoNumbers(input1, input2)
|
|
for output != nil {
|
|
fmt.Println(output.Val)
|
|
output = output.Next
|
|
}
|
|
}
|