Just a few days ago I discovered Codility, and I tried their challenges. And I must say. I got my behind handed to me on a platter. I’m not sure what the problem was, but I’ll lick my wounds and wait for the solution to come out and compare it with my own. In the meantime, I want to get ready for the next challenge so I’m reading their previous blog posts and seeing how to solve their previous problems. There are a lot of new things I haven’t heard about like (Cartesian trees, various sort algorithms, etc.)
So, how does one prepare for such challenges (especially the O(x) time and space complexity). What should I read to prepare for such a task?
1
how does one prepare for such challenges (especially the O(x) time and space complexity). What should I read to prepare for such a task?
By getting prepared of course ! It is a matter of practice and getting up to speed about areas that you have felt short. Thanks God, pretty good resources to cover once information shortcomings are on the internet and Google is your friend.
Regarding references i would advice several web-sited that do have programmer challenge questions. From that question types you can determine your shortcomings and study for them.
Resources to look:
- Programmer challenges
- World’s Best Programmer challenge
- Some programming challenge Q&A
- Programming Challenges – Quora
The only thing that you can do to prepare yourself for such kind of tests is practice. Practice a lot. There are a lot of good resouces for coders help, such as topcoder, codegolf, geeks for geeks, Programming Praxies, CodeKata, Project Euler etc.
If you are having problems with data structures, it would be better that you brush up your algorithm and data structure concepts. Best Place for that is wikipedia, but you can also look for algo data courses on nptel, coursera, etc…
3
The semi-official blog posts about Google recruitement recommands this book: The Algorithm Design Manual.
It’s very comprehensive and well written, with a ‘quick reference’ part that can help a lot in your situation, once you’re familiar enough with common algorithms and data structures.