https://dev.to/kavindyasinthasilva/top-10-algorithms-every-software-engineer-should-know-by-heart-4jag