Cracking the Coding Interview: 150 Programming Questions and Solutions (Gayle Laakmann McDowell) (5th Revised & enlarged edition)