Prior to my first technical interview I spent tons of time studying algorithms and data structures. Looking back I feel that my time would have been better spent selecting several sample questions (such as the ones you included) and solving them on a whiteboard over and over again (and checking and improving them along the way).
For questions check out careercup.com, glassdoor.com, project euler, and the Cracking the Coding Interview book: http://www.amazon.com/Cracking-Coding-Interview-Programming-...
The more practice you have, the faster you will be able to: recognize what type of problem a particular question is, come to an initial solution, and improve upon that solution.
Feel free to reach out to me with any questions! (contact info in my profile)