leetCode - 两数相加(Swift实现)
要求:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 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 }