Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

I know this may be somewhat of a repeated question, but I have special stipulations for answers to this one =p

What is the best way to learn and truly understand different algorithms and data structures? I know people have said to use CLRS and online sites, but I feel like one truly learns an algorithm or a data structure when he is forced to use them to solve a difficult problem. Project Euler questions are great, but are there any other sites or sources that provide difficult, but not overly difficult, problems that require clear and complete knowledge of algorithms and data structures to solve?

Thanks in advance!

share|improve this question
1  
why was this migrated? instead of being closed as duplicate on SO itself? – Aditya P May 6 '11 at 18:34

migrated from stackoverflow.com May 6 '11 at 17:34

marked as duplicate by gnat, World Engineer Mar 26 at 23:04

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

5 Answers

If you want something like euler... search here: Spoj,Top Coder,USACO (google is your friend)

share|improve this answer

What a good timing for the question! Google Code Jam http://code.google.com/codejam qualification round starts just in 6 hours.

share|improve this answer
1  
I'm not sure google code jam is the best place to learn data structures and algorithms. You really need a very strong understanding of dynamic programming and math (especially as you progress to later rounds) to get anywhere. However, the content analysis after each round can be very interesting and helpful – GWW May 6 '11 at 18:41

The best way is practice, and books. And more practice. By practice I mean start by solving toy programs, and then go for more complex problems on say Project Euler, Topcoder etc. About books, its a good idea to read books like Programming Pearls, and say, Algorithm Design Manual.

What you essentially are asking for, is intuitive feel of what data structures and algorithms to use to solve difficult problems. This comes by experience, and mistakes, so practice a lot. And good look.

share|improve this answer

Check out TopCoder and try those practice problems. And if you're totally down, particapte in their programming competitions. They clearly require algorithms to find the solution and it's very diverse: anything from dynamic programming, graph search, etc.

Here's a link to get you started: http://apps.topcoder.com/wiki/display/tc/Algorithm+Overview

share|improve this answer

Topcoder usually doesn't help much. It can be used to practice what you've learned before. The best solution is ejudge system. like http://www.codeforces.com/

You can solve problems and see the result immediately.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.