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!