美文网首页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)

    题目 两个数相加 问题: 给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个...

  • LeetCode - 两数相加(Swift)

    两数相加 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点...

  • LeetCode-2. 两数相加(Swift)

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-tw...

  • LeetCode 2. 两数相加(Swift)

    题目: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每...

  • leetcode - 2. 两数相加[Swift]

    题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存...

  • Swift - LeetCode - 两数相加(1)

    题目 两个数相加 问题: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存...

  • 用Swift写LeetCode(2)- 两数相加

    一、题目描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它...

  • LeetCode 2——两数相加

    1. 题目 2. 解答 循环遍历两个链表 若两个链表都非空,将两个链表结点的值和进位相加求出和以及新的进位 若其中...

  • 2、两数相加-LeetCode

    给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表...

  • LeetCode 2 两数相加

    题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序 的方式存储的,并且它们的每个节...

网友评论

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

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