-
Notifications
You must be signed in to change notification settings - Fork 0
/
2_add_two_numbers.py
57 lines (54 loc) · 1.49 KB
/
2_add_two_numbers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
# def addTwoNumbers(self, l1, l2):
# """
# :type l1: ListNode
# :type l2: ListNode
# :rtype: ListNode
# """
# last = 0
# head = prev = None
# while True:
# if l2 is None and l1 is None and last == 0:
# break
# val = last
# if l2 is not None:
# val += l2.val
# l2 = l2.next
# if l1 is not None:
# val += l1.val
# l1 = l1.next
# if val >= 10:
# val = val % 10
# last = 1
# else:
# last = 0
# current = ListNode(val)
# if prev is None:
# head = current
# else:
# prev.next = current
# prev = current
# return head
def addTwoNumbers(self, l1, l2):
carry = 0
# dummy head
head = curr = ListNode(0)
while l1 or l2:
val = carry
if l1:
val += l1.val
l1 = l1.next
if l2:
val += l2.val
l2 = l2.next
curr.next = ListNode(val % 10)
curr = curr.next
carry = val / 10
if carry > 0:
curr.next = ListNode(carry)
return head.next