Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
54 lines (47 loc) · 1.56 KB

File metadata and controls

54 lines (47 loc) · 1.56 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
#!/usr/bin/env python
'''
Leetcode: Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
'''
from __future__ import division
import random
class DigitNode(object):
def __init__(self, digit, next=None):
self.digit = digit
self.next = next
def __str__(self):
if next:
return 'DigitNode(%d, %s)' % (self.digit, str(self.next))
else:
return 'DigitNode(%d)' % (self.digit)
def add_two_numbers(a, b):
prev_carry = 0
orig_node = None
prev_node = None
while a and b:
digit = (a.digit + b.digit + prev_carry) % 10
cur_carry = (a.digit + b.digit + prev_carry) // 10
node = DigitNode(digit)
if prev_node: prev_node.next = node
else: orig_node = node
a = a.next
b = b.next
prev_carry = cur_carry
prev_node = node
# leftover
x = a if a else b
while x:
digit = (x.digit + prev_carry) % 10
cur_carry = (x.digit + prev_carry) // 10
node = DigitNode(digit)
if prev_node: prev_node.next = node
x = x.next
prev_carry = cur_carry
prev_node = node
return orig_node
if __name__ == '__main__':
a = DigitNode(2, DigitNode(4, DigitNode(3, DigitNode(5))))
b = DigitNode(5, DigitNode(6, DigitNode(4, DigitNode(1, DigitNode(2)))))
print add_two_numbers(a,b)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.