https://blog.stackademic.com/algorithm-intuition-techniques-to-see-solutions-before-writing-code-46e0dc7523a7