def binarySearch(L, target):
# we assume L is sorted
start = 0
end = len(L)
while(start != end):
mid = (start + end)//2
if(L[mid] == target):
return mid
elif(L[mid] < target):
start = mid + 1
else:
end = mid
return -1
def repeats(L):
# return a sorted list of the repeat elements in the list L
seen = set()
seenAgain = set()
for element in L: # N times
if (element in seen): # O(1)
seenAgain.add(element) # O(1)
seen.add(element) # O(1)
return sorted(seenAgain) # O(Nlog(N))