GIVEN A LIST OF NUMBERS, DECIDE IF ANY NUMBER APPEARS TWICE. THE TRICK: REMEMBER EVERY NUMBER YOU PASS. A DUPLICATE IS A NUMBER ALREADY REMEMBERED.
WALK THE LIST ONCE AND REMEMBER EACH NUMBER. IF A NUMBER IS ALREADY REMEMBERED, IT IS A TWIN. RETURN TRUE.
ONE PASS. BLUE IS THE NUMBER WE ARE ON. TAN TILES ARE REMEMBERED. THE GOLD PAIR IS THE TWIN.
1def has_duplicate(nums):2 seen = set()3 for n in nums:4 if n in seen:5 return True6 seen.add(n)7 return False
ONE WALK THROUGH THE LIST. EACH NUMBER DOES A SINGLE FAST LOOKUP IN THE SET.
THE SET CAN HOLD EVERY NUMBER SEEN. WE TRADE A LITTLE MEMORY FOR A LOT OF SPEED.