From d909b7cba28ba02de884272809af75660a4aa724 Mon Sep 17 00:00:00 2001 From: Larissa Lages Date: Sat, 18 Mar 2023 19:03:27 -0400 Subject: [PATCH 1/3] sum two lists - v1 --- others/add_two_integers.py | 70 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 others/add_two_integers.py diff --git a/others/add_two_integers.py b/others/add_two_integers.py new file mode 100644 index 0000000..5bad8af --- /dev/null +++ b/others/add_two_integers.py @@ -0,0 +1,70 @@ +""" +Problem Statement +Given the head pointers of two linked lists where each linked list represents an integer number (each node is a digit), +add them and return the resulting linked list. Here, the first node in a list represents the least significant digit. +""" +class Node: + def __init__(self, value): + self.value = value + self.next = None + +def sum_lists(l1, l2): + c = 0 + l3 = None + while l1 or l2: + v1 = 0 + v2 = 0 + if l1: + v1 = l1.value + l1 = l1.next + if l2: + v2 = l2.value + l2 = l2.next + r = v1 + v2 + c + c = r // 10 + d = r % 10 + + if not l3: + l3 = Node(d) + p3 = l3 + else: + p3.next = Node(d) + p3 = p3.next + + return l3 + +def print_list(l): + while l: + print("{}->".format(l.value), end = '') + l = l.next + +def print_number(l): + stack = [] + while l: + stack.append(l.value) + l = l.next + while len(stack) > 0: + print("{}".format(stack.pop()), end = '') + +def create_linked_list(list_numbers): + l = None + for n in list_numbers: + if not l: + l = Node(n) + p = l + else: + p.next = Node(n) + p = p.next + return l + +first = create_linked_list([1, 2, 3]) #321 +second = create_linked_list([1, 2]) #21 +print("Sum:") +r = sum_lists(first, second) +print(print_number(r)) + + + + + + From 4a5b8af0381876f198db2aa47c05c4f346987711 Mon Sep 17 00:00:00 2001 From: Larissa Lages Date: Sat, 18 Mar 2023 19:17:10 -0400 Subject: [PATCH 2/3] fix small bug --- others/add_two_integers.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/others/add_two_integers.py b/others/add_two_integers.py index 5bad8af..4de1a18 100644 --- a/others/add_two_integers.py +++ b/others/add_two_integers.py @@ -44,7 +44,8 @@ def print_number(l): stack.append(l.value) l = l.next while len(stack) > 0: - print("{}".format(stack.pop()), end = '') + v = stack.pop() + print("{}".format(v), end = '') def create_linked_list(list_numbers): l = None @@ -59,9 +60,10 @@ def create_linked_list(list_numbers): first = create_linked_list([1, 2, 3]) #321 second = create_linked_list([1, 2]) #21 -print("Sum:") +print("Sum:", end='') r = sum_lists(first, second) -print(print_number(r)) +print_number(r) +print() From 959db6d1686f2cb4543ad51d006ea470f7bf30e2 Mon Sep 17 00:00:00 2001 From: Larissa Lages Date: Sat, 18 Mar 2023 19:17:48 -0400 Subject: [PATCH 3/3] rm extra new lines --- others/add_two_integers.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/others/add_two_integers.py b/others/add_two_integers.py index 4de1a18..ad676c2 100644 --- a/others/add_two_integers.py +++ b/others/add_two_integers.py @@ -64,9 +64,3 @@ def create_linked_list(list_numbers): r = sum_lists(first, second) print_number(r) print() - - - - - -