Cracking Coding Interview solutions in Java with test cases whenever possible