I want to improve my problem-solving skills and write cleaner, more efficient Python code. My university course covered algorithms at a general level, but I'm still unsure how to organize my learning. What topics, practice methods, or resources would you recommend starting with?
4 Answers
Begin with fundamental searching and sorting algorithms, and implement a few yourself rather than only reading about them. Divide-and-conquer, breadth-first search, and depth-first search are also useful techniques to understand. You may not write these algorithms from scratch in every project, but knowing how they work helps you choose libraries, tools, and data storage appropriately.
Review basic data structures and algorithm analysis together. Arrays and hash maps are a good starting point, followed by stacks, queues, binary search, trees, and graphs. Learn Big O notation so you can understand how a solution’s running time and memory use grow as the input gets larger.
Avoid jumping randomly between practice problems. Pick one topic, such as arrays and hashing, and solve several related problems before moving on to two pointers, sliding windows, or binary search. After solving a problem, review why your approach works and whether it can be made faster. Revisit it a few days later without looking at your notes; that is often when the method really sticks.
Start by breaking each problem into smaller pieces. Identify the inputs, the transformations you need to perform, and the expected output before writing much code. Get a simple working version first, then improve it. Thinking through the solution is more important than immediately typing code.

It helps to learn the relevant data structures before trying to optimize solutions. Once you understand how the data is stored and accessed, the algorithmic choices become much clearer.