Files
2026-06-21 13:11:31 +10:00

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
}
}