Skip to content

Commit 6978def

Browse files
committed
include both buf and non-buf solutions
1 parent cfd42e9 commit 6978def

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

Python/chapter02/2.1 - Remove Dups/miguel_2.1_sol.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,25 @@ def build_linked_list(numbers: List[int]) -> LinkedList:
6969

7070

7171
def remove_dups(ll: LinkedList) -> LinkedList:
72+
"""
73+
remove_dups will remove duplicates from the
74+
input linked list ll. A temporary buffer
75+
is used.
76+
Runtime: O(N)
77+
Space Complexity: O(N)
78+
:param ll: a linked list
79+
:return: a linked list without duplicates
80+
"""
81+
n = ll.head
82+
unique_vals = set()
83+
while n.next is not None:
84+
unique_vals.add(n.data)
85+
n = n.next
86+
unique_vals.add(n.data)
87+
return build_linked_list(list(unique_vals))
88+
89+
90+
def remove_dups_no_buffer(ll: LinkedList) -> LinkedList:
7291
"""
7392
remove_dups will remove duplicates from the
7493
input linked list ll. No temporary buffer
@@ -142,6 +161,10 @@ def test_remove_dups(self):
142161
for ll, expected in self.test_cases:
143162
self.assertEqual(remove_dups(ll), expected)
144163

164+
def test_remove_dups_no_buffer(self):
165+
for ll, expected in self.test_cases:
166+
self.assertEqual(remove_dups_no_buffer(ll), expected)
167+
145168

146169
if __name__ == '__main__':
147170
unittest.main()

0 commit comments

Comments
 (0)