If you would like to learn more about algorithms or practice them, then read on.
- Big-O Notation
- Basic Data Structures
- Recursion
- Binary Search Trees (Video)
- Tries and Graphs (Video)
- HackerRank - to practice solving algorithmic problems in Java, Python, C++ - has an in-built IDE
- InterviewCake - for currently popular interview questions and answers. You do not have to write any code to see hints to the solution. After a limited number of free questions, you will have to sign up/pay. But it's a great resource anyways, and you can sign up for a question/week for free.
- Project Euler - for more mathematical problems to practice on. Solution explanations are provided after submitting the correct answer (not code)
- CodingBat for Recursion - to sink your teeth into simple recursion problems that build up to be more and more difficult. IDE is built in, all in Java. There's also a second part to this.
- Google Code Jam past competition problems - a nice set of problems that have been used in competitions previously.
- Python - a really good resource to learn how to work with data structures and algorithms in Python.
- Sorting Algorithms - visualizations and code in psuedo code, but easily adatpable to Python and Java for all the most common sorting algorithms.
- Visualgo - a nice way to visualize algorithms
- ACM-ICPC - ACM-ICPC hosts coding competitions that may be found here
- TopCoder (advanced) - more difficult and challenging algorithmic problems may be found here
- Google Code Jam - Google hosts a Code Jam every year with Qualification rounds in April. They also hosted a Code Jam exclusively for women, with winners going to Google I/O. They also have a code practice area if you don't want to compete
- Programming Interviews Exposed - A really good book that explains the process of writing a solution and then optimizing parts of the solution with goog explanations about why that particular optimization is being done. Solutions in Java
- Cracking the Coding Interview - A good book to practice questions and answers from with solutions in Java. This is better after you have a bit more practice, as it contains solutions and optimizations but doesn't hold your hand up to the optimizations.