美文网首页Swift - LeetCodeSwift in LeetCode
Swift - LeetCode - 两数相加(2)

Swift - LeetCode - 两数相加(2)

作者: 依赖糊涂 | 来源:发表于2019-02-27 11:52 被阅读1次

    题目

    两个数相加

    问题:

    给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。
    你可以假设出了数字0之外,这两个数字都不会以零开头

    进阶:

    如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转

    示例:

    输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) 
    输出: 7 -> 8 -> 0 -> 7
    
    代码:
    /**
    public class SingNode {
        public var value : Int
        public var nextNode: SingNode?
        
        public init(value:Int) {
            self.value = value
        }
    }
     **/
     func addTwoNumberUp(_ l1:singNode?,_ l2:singNode?) -> singNode? {
            var l1Arr:Array = [Int]()
            var l2Arr:Array = [Int]()
            
            var c1 = l1
            var c2 = l2
            
            while c1 != nil {
                l1Arr.append(c1!.value)
                c1 = c1?.nextNode
            }
            
            while c2 != nil {
                l2Arr.append(c2!.value)
                c2 = c2?.nextNode
            }
            
            var dummyNode:singNode? = nil
            var result = 0
            
            while !l1Arr.isEmpty || !l2Arr.isEmpty {
                result = result/10
                if !l1Arr.isEmpty {
                    result += l1Arr.removeLast()
                }
                
                if !l2Arr.isEmpty {
                    result += l2Arr.removeLast()
                }
                
                let respNode:singNode = singNode.init(value: result%10)
                respNode.nextNode = dummyNode
                dummyNode = respNode
                
                if l1Arr.isEmpty && l2Arr.isEmpty {
                    return respNode
                }
            }
            return nil
        }
        
    

    相关文章

      网友评论

        本文标题:Swift - LeetCode - 两数相加(2)

        本文链接:https://www.haomeiwen.com/subject/hlbxuqtx.html