Skip to content

Commit 0f4b28c

Browse files
committed
A faster solution for 2.add two numbsers
1 parent b053830 commit 0f4b28c

File tree

1 file changed

+10
-18
lines changed

1 file changed

+10
-18
lines changed

Math/AddTwoNumbers.swift

+10-18
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,18 @@
1616

1717
class AddTwoNumbers {
1818
func addTwoNumbers(l1: ListNode?, _ l2: ListNode?) -> ListNode? {
19-
var carry = 0, l1 = l1, l2 = l2
20-
let dummy = ListNode(0)
21-
var node = dummy
19+
guard let l1 = l1 else {return l2}
20+
guard let l2 = l2 else {return l1}
2221

23-
while l1 != nil || l2 != nil || carry != 0 {
24-
if l1 != nil {
25-
carry += l1!.val
26-
l1 = l1!.next
27-
}
28-
if l2 != nil {
29-
carry += l2!.val
30-
l2 = l2!.next
31-
}
32-
33-
node.next = ListNode(carry % 10)
34-
node = node.next!
35-
36-
carry = carry / 10
22+
let outputNode = ListNode((l1.val + l2.val)%10)
23+
if l1.val + l2.val > 9 {
24+
outputNode.next = addTwoNumbers(addTwoNumbers(l1.next, l2.next),
25+
ListNode(1))
26+
} else {
27+
outputNode.next = addTwoNumbers(l1.next, l2.next)
3728
}
3829

39-
return dummy.next
30+
31+
return outputNode
4032
}
4133
}

0 commit comments

Comments
 (0)