Swift 通过代码:
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 _ = l1, let _ = l2 else {
if l1 == nil {
return l2
} else {
return l1
}
}
let node = ListNode(0)
let resultNode = node
var p: ListNode? = node
var p1 = l1
var p2 = l2
var addNum = 0
while p1 != nil || p2 != nil {
let nextNode = ListNode(0)
nextNode.val = (addNum + (p1?.val ?? 0 ) + (p2?.val ?? 0)) % 10
addNum = (addNum + (p1?.val ?? 0) + (p2?.val ?? 0)) / 10
p?.next = nextNode
p1 = p1?.next
p2 = p2?.next
p = p?.next ?? nil
}
if addNum > 0 {
let nextNode = ListNode(addNum)
p?.next = nextNode
}
return resultNode.next
}
}