algorithm practice for crack code interview