Reflection on #100daysofcode…I mean more like 110 days streak of algorithm questions
About June 2020, I discovered an incredible and fun platform from a friend of mine. I wrote an article about the platform before, and I have been doing many algorithm questions a lot with the site lately. So I won’t make any introduction to the platform.
Since the beginning of July 2020, the platform user interface has changed a lot. I was fascinated by how the gamification system is so rewarding and engaging. They came out with a streak system where if you solve a certain amount of the problems and you will be awarded batches (you can read more on their guide here).To keep the streak going, you need to solve at least one different question each day. If you can’t solve the question and look up the editorials, the streak would not count as solving one problem a day until you solve a problem without unlocking the editorial. I was hooked into the idea and kept me going for almost 3 months and a half non -stop solving at least one question per day with binarysearch.com(solving 288 problems-mostly easy, you can check my stats here).
What is remarkable is, I am not the only person with such a high streak; there are a lot of users who are having such a high streak as well (someone who is in 126 days of streak now). The platform is free, fun, and interactive, making one of the users solve 160 problems in a single day and 621 total problem-solving in just 15 days. Well, I guess you can say Leetcode is the same, having monthly LeetCoding challenges since April 2020, but in my opinion, achieving that streak in binarysearch.com is harder. Some of the problems in binarysearch.com are from leetcode; some are more toward competitive programming types of problems and some just arbitrary that you can’t find on the internet. Looking up solutions(editorial) does not count in the streak system. However, even after you unlock the editorial, you can’t still solve it because no one wrote the solution yet.
I learned many lessons within this 110 days streak problem-solving journey, but I want to emphasize 3 things that I gained the most.
Able to see the pattern/ approach mush faster than before
Before, I always struggled to approach such problems, but now I can see a problem and get the right approach faster. Although having the right approach makes it easier to solve the problem(sliding window, frequency pattern, two pointers…etc.), I realize that sometimes that is not always the case. Some questions require you to do more than just one technique to solve the problems.
Learning other computer programming languages
Every time I finished a question, I would try to refactor and make the time complexity more efficient. Since binarysearch.com, most users solve problems with C++, Python, and Java; therefore, the editorials are mostly with those languages. Sometimes when I could not think of ways to make the time/space complexity more efficient, I would look at Java/Python/ C++ and transfer them into Javascript.
Writing clean codes
The meaning of writing clean codes here is not just talking about DRY(Don’t Repeat Yourself) but also naming variables and makes the codes more accessible and easy to read for all level programmers. I tend to contribute editorials and polish my solution before I post on the platform. It is crucial to let people understand your code and know what the codes are doing.
Conclusion
In 4 months, I solved 288 problems solved in binarysearch.com and 100 plus problems in Leetcode. I know number solved should not matter, but sometimes it is good to test the water yourself each day with a different problem set that you never encounter. In that way, you know which part of the topic is your strength and weakness. Sometimes I even go back and redo all the ones that I felt are important concepts to grasp. Thank you for binarysearch.com, allowing me to learn such an invaluable lesson in this 110 days streak of problem-solving. I am planning to keep the streak going as I am still in my job search process. I still have a lot of topics to strengthen and learn. Wish me luck!