leetCode

要求:

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头

 1 class Solution {
 2     func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
 3         var p = l1
 4         var q = l2
 5         let headNode = ListNode(0)
 6         var currentNode = headNode
 7         var carry = 0
 8         while p != nil || q != nil {
 9             let x = (p != nil) ? p?.val : 0
10             let y = (q != nil) ? q?.val : 0
11             let sum = x! + y! + carry
12             
13             carry = sum / 10
14             currentNode.next = ListNode(sum % 10)
15             currentNode = currentNode.next!
16             if p != nil {
17                 p = p?.next
18             }
19             if q != nil {
20                 q = q?.next
21             }
22         }
23         if carry > 0 {
24             currentNode.next = ListNode(carry)
25             currentNode = currentNode.next!
26         }
27         return headNode.next
28     }
29 }
原文地址:https://www.cnblogs.com/kaisi/p/10114629.html