[SOLUTIONS] Cracking the code interview