1.逐步迭代加和,需要注意的是最后一次的进位
public class Solution {
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
var l1 = l1
var l2 = l2
var head: ListNode? = nil
var tail: ListNode? = nil
var carry = 0
while l1 != nil || l2 != nil {
let n1 = l1 != nil ? l1!.val : 0
let n2 = l2 != nil ? l2!.val : 0
let sum = n1 + n2 + carry
if head == nil {
head = ListNode(sum % 10);
tail = head
}else {
tail?.next = ListNode(sum % 10)
tail = tail?.next
}
carry = sum / 10
if l1 != nil {
l1 = l1?.next
}
if l2 != nil {
l2 = l2?.next
}
}
if carry > 0 {
tail?.next = ListNode(carry)
}
return head
}
}