2. 两数相加

NC40 两个链表生成相加链表
输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807.
image.png

  1. //时间On,空间O1
  2. func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
  3. dummy := &ListNode{} //dummy := new(ListNode)
  4. cur := dummy
  5. sum := 0
  6. for (l1 != nil || l2 != nil || carry > 0) {
  7. cur.Next = &ListNode{} //哨兵节点dummy,实操节点cur
  8. cur = cur.Next //这两句容易写错,是cur.Next
  9. if l1 != nil {
  10. sum += l1.Val
  11. l1 = l1.Next
  12. }
  13. if l2 != nil {
  14. sum += l2.Val
  15. l2 = l2.Next
  16. }
  17. cur.Val = sum % 10 //是cur.Val,不是sum
  18. sum /= 10
  19. }
  20. return dummy.Next
  21. }