The most common practice strategy is also the least effective: solve a problem, mark it done, never look at it again, and measure progress by the count. It produces a number that goes up and a skill that does not.
Why solving once fails
When you solve a problem the first time, you are usually doing two things at once — discovering the pattern, and implementing it. The discovery is the expensive part, and it is the part that does not transfer if you never rehearse it. A month later you remember that the problem involved a heap without remembering why a heap, which is precisely the piece the next problem needs.
Recognition is not recall. Reading a solution and thinking 'yes, obviously' feels like learning and is not. Recall is producing the approach from nothing, and only recall transfers.
A schedule that works
- →Day 0 — solve it. Struggle first; open the editorial after two genuine attempts.
- →Day 1 — re-derive the approach in your head, not in an editor. Two minutes.
- →Day 7 — re-solve from scratch, no notes. If you stall, that is the signal, not a failure.
- →Day 30 — re-solve again. If it is fluent, retire it.
The intervals are not sacred. The principle is: review just as recall starts to fail, because retrieving something with effort strengthens it far more than reading it while it is still fresh.
What to write down
Notes that restate the solution are close to useless — the solution is already stored. The note that pays off records the observation that unlocked it, in your own words.
- →Bad: 'Use a hash map to store seen values.'
- →Good: 'I kept scanning forward for the complement. The move was to look backward at what I had already passed — that is what the map is for.'
- →Bad: 'Sliding window, shrink while invalid.'
- →Good: 'I shrank once per iteration out of habit. The invariant can break by more than one, so it has to be a while.'
The second version of each captures the mistake, and mistakes are what generalise. Six weeks later that note reconstructs the reasoning; the first version only reminds you of the answer.
Pick problems by pattern, not by difficulty
Grinding a random mixed list means every problem is a fresh pattern-recognition task, which is the hardest possible mode and the least efficient way to build the pattern in the first place. Do five sliding-window problems in a row and the fifth is noticeably easier than the first — that is the pattern consolidating. Mixed practice is valuable, but later, as rehearsal of recognition rather than as the way you first learn.
The number that actually matters
Not problems solved. First-attempt success rate on problems you have never seen, at a given difficulty. That is the number that predicts how an interview or a contest goes, and it is the one that improves under review rather than under volume.
A realistic weekly shape
- →Three new problems, from the current chapter.
- →Two reviews falling due from previous weeks.
- →One editorial read properly, on a problem you already solved.
- →One contest, rated, whatever the outcome.
That is roughly six hours. It is less volume than most people attempt and it retains far more, because the reviews are doing the work the new problems only started.
Reading about a pattern is not the same as producing it under time pressure. The problems that drill this are in the curriculum, in order.