https://medium.com/@immy6315/solving-the-classic-two-sum-problem-two-effective-approaches-every-programmer-should-know-56bd7a06cb09