Description
Use a hash map/set to remember what you've already seen, so checking whether an item exists (or has been seen before) is O(1) instead of scanning the array again.
?
Turns an O(n²) nested-loop scan into a single O(n) pass.
Reach for when
Runtime
O(n)
Pseudocode
seen = {}
for item in array:
add item to seen
for item in array:
if/while condition(item, seen):
update answer
return answer
Code
def map_lookup(arr):
seen = set()
for item in arr:
seen.add(item)
for item in arr:
if condition(item, seen):
return answer
return default