Looking for a more bite-sized approach to improve your programming skills over time? This problem set is for you!
These problems will introduce you to some of the most foundational Data Structure & Algorithm concepts. Please, complete them in the order they are provided, as the concepts build on each other.
The sequence of these questions and their solutions are sourced from NeetCode: https://neetcode.io/roadmap. He is an EXCELLENT resource for studying the most common DS&A concepts that appear in software development interviews. Here is his Youtube channel
Working through these problems and understanding the patterns used to solve them WILL make you a better programmer.
The problems will give you the tools to more efficiently load, process, store, and manipulate data in any program, in any language you write code in.
Don't try to do this list all at once. Take the time to dig into each question.
Take the time to study the solutions to the problem, and understand the DS&A concept involved in the solution. These are challenging problems and concepts, so completing 1 problem a day is more than enough to help you grow as a programmer.
It will usually take 2-3 hours to study and understand a LeetCode Medium level problem. So don't beat yourself up if you feel you're moving too slow. If you only have 6 hours in a week to study, you'll only have time to build understanding around 2-3 problems, and that's okay!
The important thing is to keep pushing through the problems week after week.
When taking on these problems, you should try to solve them on your own for 15-20 minutes, but no longer than that. Not knowing the answer is fine. You want to ensure you give yourself time to work your brain to solve it, but not waste time if you just don't have the knowledge.
After 15-20 minutes, you can then view other peoples solutions in the "Solutions" tab in the LeetCode window. When you view the solution, you should then take the time (at least 25 minutes at a time) to understand how the solution works, adding it to your own code window and changing pieces of it to help understand what each part does. Then, take a 5 minute break. After that break, come back and try to solve the problem on your own again with no help.
You'll run this loop whether it's your first time studying a problem, or the 15th.
- 15-20 minutes -> Try to solve, from memory with the skills you currently have, no outside resources (no google, no notes)
- 30-45 minutes - Study the solutions available in LeetCode and watch the linked NeetCode solution video. Play around with the solution code you study, changing different pieces of it and running it to see what happens. Take the time to understand the pieces of logic that make this solution work.
- 5 minutes - take a short rest to reset short term memory, don't look at your screen at all, get a drink of water and clear your mind
- Run the loop again
We've seen a resurgence of live coding exercises in the interviews our company partners conduct for Software Developer candidates.
If you are able to deeply understand the solutions to problems #1-36 in this list, it will greatly increase your chances of succeeding in these interviews and landing a Software Development job.
Use Java, C#, JavaScript, or Python to solve problems in this list, depending on your tech career path.
As you work through the problem set, store a solution file for each problem in the solutions directory.