Swift - LeetCode - 两数相加(1)

题目

两个数相加

问题:

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
代码:
/**
public class SingNode {
    public var value : Int
    public var nextNode: SingNode?
    
    public init(value:Int) {
        self.value = value
    }
}
 **/
 func addTwoNumber(_ l1:singNode?,_ l2:singNode?) -> singNode? {
        if l1 == nil {
            return l2
        }
        
        if l2 == nil {
            return l1
        }
        
        var c1 = l1
        var c2 = l2
        let dummyNode:singNode = singNode.init(value: 0)
        var tempNode = dummyNode
        
        var result = 0
        
        while c1 != nil || c2 != nil {
            result = result/10
            if c1 != nil {
                result += c1?.value ?? 0
                c1 = c1?.nextNode
            }
            
            if c2 != nil {
                result += c2?.value ?? 0
                c2 = c2?.nextNode
            }
            tempNode.nextNode = singNode.init(value: result%10)
            tempNode = tempNode.nextNode!
        }
        return dummyNode.nextNode
    }
    

你可能感兴趣的:(Swift - LeetCode - 两数相加(1))