https://josephamaurer.medium.com/what-i-learned-solving-a-leetcode-problem-a-day-for-45-straight-days-5294c3cf2da7