两数相加
/*MARK:
*给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
//Definition for singly-linked list. public class ListNode { public var val: Int public var next: ListNode? public init(_ val: Int) { self.val = val self.next = nil } } class Solution { func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? { guard let l11 = l1, let l21 = l2 else{return nil} var carray : Int = 0 var resultNode : ListNode? = nil //循环用 var node : ListNode? = nil var l1next : ListNode? = l11 var l2next : ListNode? = l21 while(l1next != nil || l2next != nil || carray > 0){ let l1var = l1next?.val ?? 0 let l2var = l2next?.val ?? 0 var sum = l2var + l1var + carray carray = sum > 9 ? 1 : 0 if sum > 9{ sum = sum % 10 } if resultNode == nil{ resultNode = ListNode(sum) node = resultNode }else{ node?.next = ListNode(sum) node = node?.next } l1next = l1next?.next l2next = l2next?.next } return resultNode } }