两数相加
/*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
}
}

浙公网安备 33010602011771号