cracking the code interview solutions