A few months ago, I noticed something about LeetCode’s daily LeetCoding Challenge: The problems were starting to repeat. This had happened in the past, but not as regularly. At this point, I can say that it’s definitely a trend. Almost every daily problem is a repeat of a problem from an earlier month of the Challenge. It’s not that the challenge authors have run out of problems. LeetCode has over 2000 problems in its library, and the daily challenge has been running for less than two years. At one problem per day, that leaves plenty of unused problems. So they’re doing it for some other reason.
Fortunately, problem repeats are not a big deal. The daily challenge is mainly a way to gamify the process of selecting one LeetCode problem per day to solve. But there’s nothing stopping a LeetCoder from picking any problem they want (assuming it’s an unlocked problem, or they have a premium subscription). In fact, problem repeats may actually be a good thing, as I’ll explain in this 2022 project plan.
Identifying the hard parts of a problem
Like last year’s project, my 2022 project will be based on LeetCode problems and model solutions. Of course I’ll continue participating in the daily problem, because why not. But as I mentioned last week, solving a problem once provides only limited benefits when it comes to learning new techniques and preparing for interviews. Since I don’t have a lot of time every day to spend on LeetCode, a new problem every day may be too much of a good thing. Having repeated problems in the Challenge means I don’t need to spend as much time on the daily problem, which provides more time to revisit problems that I select on my own.
I already have a full-time job, and I don’t have any interviews planned in the near future. If I wanted to properly learn a new problem every day using the process I described last week, there’s no way I could fit the required study time in my schedule. Instead, I’m planning my project around an in-depth study of one problem per week. Each week, I’ll select a problem from the set of problems I have solved previously during the LeetCoding Challenge, and turn the solution into a formal model solution that’s appropriate for learning and studying.
More specifically, I’ll be focusing this year on finding the hard parts of a problem using a spaced repetition process. As I explained last week, I have been observing how which parts of a coding problem I find challenging depends on when I last looked at the problem. For example, if I solved the problem recently, I can generally remember exact lines of code and just reproduce them. If it has been a long time since I solved the problem, I have to try to remember concepts, and come up with the code based on those.
So in addition to tracking quantitative spaced repetition details like my last practice date and how long a problem took to solve, I’ll also note what made the problem difficult to solve during that repetition. It could be something fundamental about the algorithm, something about that specific problem, or just a programming language syntax issue. This should allow me to target learning difficulties at a more granular level, thereby making the spaced repetition process more efficient.
Quora in 2022
I plan to keep answering questions on Quora this year.
The biggest change on Quora in 2021 was Quora+, the company’s plan to supplement its advertising income with subscription income. I don’t plan to participate in Quora+ either as a publisher or as a consumer. I’m not inclined to do the former because the dollar amounts involved are too miniscule to offset the annoyance factor for readers. And I’m not interested in the latter because Quora’s content quality is too unreliable to be worth a monthly fee. If Quora implemented the changes suggested by Jon Shore, a subscription might be worth it. But those changes are highly unlikely for both technical and business reasons.
Good luck in 2022!
(Image credit: Marco Verch)