题目
两个数相加
问题:
给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。
你可以假设出了数字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
}