时间复杂度 O(m+n)
空间复杂度 O(m+n)
m 和 n 分别表示两个链表的长度
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
// 记录进位
carry := 0
var dummyHead ListNode
// 指向三个链表的指针
p1, p2, p3 := l1, l2, &dummyHead
for p1 != nil || p2 != nil {
v1, v2 := 0, 0
if p1 != nil {
v1 = p1.Val
p1 = p1.Next
}
if p2 != nil {
v2 = p2.Val
p2 = p2.Next
}
sum := v1 + v2 + carry
carry = sum / 10
p3.Next = &ListNode{Val : sum % 10}
p3 = p3.Next
}
// 注意检查最后的进位!
if carry == 1 {
p3.Next = &ListNode{Val : 1}
}
return dummyHead.Next
}
原文:https://www.cnblogs.com/nini-skyrim/p/12495210.html