Python Algorithms: Remove Duplicates

Recently, I decided to join my University’s coding team. Frankly, I haven’t coded since working for Intel on Venture team and I needed a refresher.

Since your here lets go along for the coding ride. The problem of the day is: Remove duplicate numbers from a list.

def removeDups(lst):
newLst = []
for i in lst:
if i not in newLst:
newLst.append[i]
return newLst

This code works but it is slow as fuck. The time complexity is O(n²) due to us going through two lists. On the for i in lst line that is one O(n) which has another loop nested inside on the if i not in newLst which is another O(n). This brings the complexity to O(n²).

def removeDups(lst):
S = set()
for i in lst:
if i not in S:
S.add(i)
return S

This solution however has the time complexity of O(n). The major reason for that is instead of using a new List for the removal of duplicate numbers we used a Set. A set uses a hash-table as its underlying data structure. This explains the O(1) membership checking, since looking up an item in a hash-table is an O(1) operation, on average. So now we only have the O(n) from the for i in lst line.

Congratulations we now know how to remove duplicate numbers from a list!