I just finished leetcode daily questions for 100 consecutive days (Almost. Used time travel tickets few times). Received my badge today.
Completing 100 LeetCode problems is a significant achievement for anyone looking to strengthen their coding skills. Whether you're preparing for a technical interview, enhancing your understanding of algorithms, or simply pushing yourself to grow as a programmer, reaching this milestone is no small feat. The process can be challenging, but the rewards—both in knowledge and confidence—are immense.
Failures in the past
I have started and failed at least 5 time in last 2-3 years. I have purchased many paid courses, followed Youtube channels, took leetcode premium 2 times yet I was not able to do for more than a month. I used to get frustrated with every unsolved question and then eventually stop.
This time I took a different approach. I said to myself, only one question in a day. Use the question to learn, instead of solving. For the first month, I solved only few easy questions without looking at the solutions. But I didn’t just look at the solution, I tried to learn from it. Tried to do similar problems, sometimes I succeeded, sometimes I failed. But whenever I was successful, it gave me immense confidence and at the same time I did not get discouraged with the failures.
The Beginning: Overcoming Initial Challenges
When you first start solving LeetCode problems, it can feel overwhelming. There are hundreds of problems ranging from "easy" to "hard," and the sheer volume of topics—arrays, linked lists, dynamic programming, graph algorithms, etc.—can make you feel like you’ll never master it all. But the key is not to focus on the number of problems left to solve, but on consistency and progress.
Many beginners start by tackling the "easy" problems. This is a great way to build confidence and understand how the platform works. LeetCode’s environment allows you to code in multiple programming languages, which is helpful for testing different approaches. As you move on to more complex problems, you’ll find that your understanding of core data structures like stacks, queues, and trees deepens.
Consistency is Key
One of the biggest lessons I’ve learned from completing 100 LeetCode problems is the importance of consistency. While it’s tempting to try to rush through problems to hit a certain number, the real value comes from solving problems thoughtfully. This often means solving one or two problems a day but doing so with full focus. Instead of moving on once I’ve gotten the solution, I take time to review my approach, analyze its efficiency, and look at alternative solutions.
LeetCode has a strong community of users, and after solving a problem, it’s worth reading through discussions and exploring other people’s solutions. You’ll often find new insights, whether it’s a more efficient algorithm, a clever use of a data structure, or a simpler approach than you had considered.
The Learning Curve: From Frustration to Mastery
At first, some problems will seem impossible, especially when you start encountering medium and hard problems. It’s easy to feel discouraged when you can’t figure out a solution or when your code fails multiple test cases. But every challenge is an opportunity to learn. One of the most important things I’ve realized is that failure is part of the process.
In fact, struggling with a problem is what makes the eventual solution more rewarding. Every time you debug a problem, optimize a solution, or refactor your code, you’re reinforcing your understanding. I found that after the first 20 or so problems, the once unfamiliar concepts started to become clearer. Topics like dynamic programming, which initially seemed like a foreign language, became more intuitive.
Growth Through Practice
Another significant takeaway from solving 100 problems is that my speed and problem-solving ability improved gradually but steadily. In the beginning, even easy problems could take an hour or more. But with practice, I learned to recognize patterns and common strategies. For instance, I could quickly identify when to use a sliding window, backtracking, or a depth-first search (DFS) approach based on the problem description.
Moreover, I became more adept at thinking about edge cases and optimizing solutions. Time and space complexity became second nature, and I started evaluating my solutions based on Big-O analysis without having to consciously think about it.
Solutions & Notes
I created a github-repo to put the solutions and my notes. Initially I used a notebook and pen, but I think it’s better to preserve it digitally as it contains some decent insights. I plan to put all my future solutions and notes here and backfill the initial 100 solutions.
Advice for Others
If you're starting out on LeetCode or are partway through your journey, my advice is simple: stay consistent and don’t be afraid to fail. The first 100 problems will test your patience, but they will also expand your problem-solving toolbox. Even if you can only dedicate 30 minutes a day to solving problems, that time will add up over weeks and months. Each problem you solve brings you one step closer to mastering the art of algorithms.
In the end, completing 100 LeetCode problems is not just about hitting a number. It’s a reflection of the progress you've made, the knowledge you've gained, and the resilience you’ve built along the way. The journey doesn’t stop here—there are always more problems to solve and more to learn—but reaching this milestone is a reminder of how far you’ve come. Keep pushing, keep learning, and enjoy the process!