leetcode: 2 sum - think about DICTIONARIES
Things I learnt:
When there is mapping to be done, think about a DICTIONARY
Here, we have to use the VALUES of the array, e.g. [1, 2, 3, 4]
- Figure out which numbers add up to 6 = 2 + 4
But we want to output the INDEX of the array
So we need to map the values, 2 and 4, to their indices
Whenever mapping is needed, think of using a DICTIONARY
When thinking about for loops and lots of iterations, think about a DICTIONARY
Brute force:
I knew I’d need to write some for loops and call stuff again and again til I got the solution.
I also knew this would be poorly optimized for big O notation (time and space)
I thought I’d optimised it because I was reducing the size of the array each time, but, even still, it wasn’t great apparently.
Big O notation
Time is more important than Space (memory / storage)
Often, the brute force will have
Time = O(n²) and Space = O(1)
The largest possible time
The smallest possible space, because you’re not storing anything
Time is MUCH more important to optimise, because memory is cheap and enormous
- Often, there is a way to flip Time = O(n²) and Space = O(1) to Time = O(n) and Space = O(n)