时间复杂度 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