File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed
Python/chapter02/2.1 - Remove Dups Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -69,6 +69,25 @@ def build_linked_list(numbers: List[int]) -> LinkedList:
69
69
70
70
71
71
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 :
72
91
"""
73
92
remove_dups will remove duplicates from the
74
93
input linked list ll. No temporary buffer
@@ -142,6 +161,10 @@ def test_remove_dups(self):
142
161
for ll , expected in self .test_cases :
143
162
self .assertEqual (remove_dups (ll ), expected )
144
163
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
+
145
168
146
169
if __name__ == '__main__' :
147
170
unittest .main ()
You can’t perform that action at this time.
0 commit comments