mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-16 23:16:26 +00:00
docs(todos): add review backlog planning markdown
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
# todo — draining the review backlog
|
||||
|
||||
every solution in `work/1` owes a blind re-solve at `work/3` and a second one at `work/7`. both buckets are empty, so 36 problems owe 72 re-solves and not one has been started. snapshot: `reviewqueues("2026-08-31")` from `apps/cli/work.ts` — what `bun run pick` shows — cross-checked against `/api/stats`.
|
||||
|
||||
at 10 problems a day *including* the campaign's own load, 72 re-solves do not fit in one week: this week absorbs 38, the `+3` rung finishes **sat sep 5** (campaign day 20), the last `+7` clears **fri sep 18** (day 33), and normal srs resumes **sat sep 19** — see [when standard srs resumes](#when-standard-srs-resumes). saturday gates are deliberately left out of the count.
|
||||
|
||||
## rules this plan follows
|
||||
|
||||
- **≤ 10 problems a day, everything counted.** each day's new core set and the on-time reviews it earns are booked first; the backlog takes what is left — 7 slots on a light day, 2 on a heavy one.
|
||||
- **coverage before depth.** all 36 `+3` re-solves come first — one blind pass over everything — before any problem gets its `+7`.
|
||||
- **oldest first.** lc 387 and lc 1365 have been sitting 50 days.
|
||||
- **≥ 3 days between a problem's own `+3` and `+7`.** two re-solves in one day test nothing.
|
||||
- **sunday is not a slot.** `workingday()` never mints one; neither does this list.
|
||||
- **re-solve blind, then push.** `bun run pick` (tab cycles to the 3-day and 7-day sections) scaffolds straight into `work/3`/`work/7`. do not open `work/1` first. pushing the file is the log: `close-solved.yml` posts the bucket to `/admin/solved` and d1 moves the problem up the ladder.
|
||||
|
||||
## this week
|
||||
|
||||
### mon aug 31 — 3 new + 7 backlog = 10/10
|
||||
|
||||
*topic 08 — linked list ([#10](https://github.com/prdlk/leetcode/issues/10), closed today)*
|
||||
|
||||
| bucket | problem | difficulty | where | why |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `work/1` | [lc 21 · merge two sorted lists](https://github.com/prdlk/leetcode/issues/78) | easy | linked list | done today |
|
||||
| `work/1` | [lc 206 · reverse linked list](https://github.com/prdlk/leetcode/issues/77) | easy | linked list | done today |
|
||||
| `work/1` | [lc 141 · linked list cycle](https://github.com/prdlk/leetcode/issues/79) | easy | hash table | done today |
|
||||
| `work/3` | lc 387 · first unique character in a string | easy | hash table | 50d stale — first solved 2026-07-12 |
|
||||
| `work/3` | lc 1365 · how many numbers are smaller than the current number | easy | array | 50d stale — first solved 2026-07-12 |
|
||||
| `work/3` | lc 268 · missing number | easy | array | 14d stale — first solved 2026-08-17 |
|
||||
| `work/3` | lc 344 · reverse string | easy | two pointers | 14d stale — first solved 2026-08-17 |
|
||||
| `work/3` | lc 1426 · counting elements | easy | array | 14d stale — first solved 2026-08-17 |
|
||||
| `work/3` | lc 1832 · check if the sentence is pangram | easy | hash table | 14d stale — first solved 2026-08-17 |
|
||||
| `work/3` | [lc 15 · 3sum](https://github.com/prdlk/leetcode/issues/43) | medium | array | 13d stale — first solved 2026-08-18 |
|
||||
|
||||
### tue sep 1 — 2 new + 8 backlog = 10/10
|
||||
|
||||
*topic 09 — hybrid structures ([#11](https://github.com/prdlk/leetcode/issues/11))*
|
||||
|
||||
| bucket | problem | difficulty | where | why |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `work/1` | [lc 146 · lru cache](https://github.com/prdlk/leetcode/issues/87) | medium | topic 09 — hybrid structures | new core problem |
|
||||
| `work/1` | [lc 2 · add two numbers](https://github.com/prdlk/leetcode/issues/88) | medium | topic 09 — hybrid structures | new core problem |
|
||||
| `work/3` | [lc 49 · group anagrams](https://github.com/prdlk/leetcode/issues/30) | medium | array | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 125 · valid palindrome](https://github.com/prdlk/leetcode/issues/41) | easy | two pointers | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 167 · two sum ii - input array is sorted](https://github.com/prdlk/leetcode/issues/42) | medium | array | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 217 · contains duplicate](https://github.com/prdlk/leetcode/issues/27) | easy | array | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 238 · product of array except self](https://github.com/prdlk/leetcode/issues/37) | medium | array | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 242 · valid anagram](https://github.com/prdlk/leetcode/issues/28) | easy | hash table | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 303 · range sum query - immutable](https://github.com/prdlk/leetcode/issues/36) | easy | array | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 560 · subarray sum equals k](https://github.com/prdlk/leetcode/issues/38) | medium | array | 13d stale — first solved 2026-08-18 |
|
||||
|
||||
### wed sep 2 — 3 new + 7 backlog = 10/10
|
||||
|
||||
*topic 10 — matrix index math ([#12](https://github.com/prdlk/leetcode/issues/12))*
|
||||
|
||||
| bucket | problem | difficulty | where | why |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `work/1` | [lc 48 · rotate image](https://github.com/prdlk/leetcode/issues/91) | medium | topic 10 — matrix index math | new core problem |
|
||||
| `work/1` | [lc 54 · spiral matrix](https://github.com/prdlk/leetcode/issues/92) | medium | topic 10 — matrix index math | new core problem |
|
||||
| `work/1` | [lc 73 · set matrix zeroes](https://github.com/prdlk/leetcode/issues/93) | medium | topic 10 — matrix index math | new core problem |
|
||||
| `work/3` | lc 1413 · minimum value to get positive step by step sum | easy | array | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | lc 1480 · running sum of 1d array | easy | array | 13d stale — first solved 2026-08-18 |
|
||||
| `work/3` | [lc 33 · search in rotated sorted array](https://github.com/prdlk/leetcode/issues/60) | medium | array | 12d stale — first solved 2026-08-19 |
|
||||
| `work/3` | [lc 704 · binary search](https://github.com/prdlk/leetcode/issues/58) | easy | array | 12d stale — first solved 2026-08-19 |
|
||||
| `work/3` | [lc 875 · koko eating bananas](https://github.com/prdlk/leetcode/issues/59) | medium | array | 12d stale — first solved 2026-08-19 |
|
||||
| `work/3` | [lc 977 · squares of a sorted array](https://github.com/prdlk/leetcode/issues/46) | easy | array | 12d stale — first solved 2026-08-19 |
|
||||
| `work/3` | [lc 121 · best time to buy and sell stock](https://github.com/prdlk/leetcode/issues/50) | easy | array | 11d stale — first solved 2026-08-20 |
|
||||
|
||||
### thu sep 3 — 3 new + 3 on-time reviews + 4 backlog = 10/10
|
||||
|
||||
*topic 11 — tree dfs ([#13](https://github.com/prdlk/leetcode/issues/13))*
|
||||
|
||||
| bucket | problem | difficulty | where | why |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `work/1` | [lc 226 · invert binary tree](https://github.com/prdlk/leetcode/issues/96) | easy | topic 11 — tree dfs | new core problem |
|
||||
| `work/1` | [lc 104 · maximum depth of binary tree](https://github.com/prdlk/leetcode/issues/97) | easy | topic 11 — tree dfs | new core problem |
|
||||
| `work/1` | [lc 236 · lowest common ancestor of a binary tree](https://github.com/prdlk/leetcode/issues/98) | medium | topic 11 — tree dfs | new core problem |
|
||||
| `work/3` | [lc 21 · merge two sorted lists](https://github.com/prdlk/leetcode/issues/78) | easy | linked list | on time — solved mon aug 31 |
|
||||
| `work/3` | [lc 206 · reverse linked list](https://github.com/prdlk/leetcode/issues/77) | easy | linked list | on time — solved mon aug 31 |
|
||||
| `work/3` | [lc 141 · linked list cycle](https://github.com/prdlk/leetcode/issues/79) | easy | hash table | on time — solved mon aug 31 |
|
||||
| `work/3` | [lc 1 · two sum](https://github.com/prdlk/leetcode/issues/29) | easy | array | 7d stale — first solved 2026-08-24 |
|
||||
| `work/3` | [lc 11 · container with most water](https://github.com/prdlk/leetcode/issues/44) | medium | array | 7d stale — first solved 2026-08-24 |
|
||||
| `work/3` | [lc 392 · is subsequence](https://github.com/prdlk/leetcode/issues/45) | easy | two pointers | 7d stale — first solved 2026-08-24 |
|
||||
| `work/3` | [lc 3 · longest substring without repeating characters](https://github.com/prdlk/leetcode/issues/51) | medium | hash table | 6d stale — first solved 2026-08-25 |
|
||||
|
||||
### fri sep 4 — 3 new + 2 on-time reviews + 5 backlog = 10/10
|
||||
|
||||
*topic 12 — tree bfs ([#14](https://github.com/prdlk/leetcode/issues/14))*
|
||||
|
||||
| bucket | problem | difficulty | where | why |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `work/1` | [lc 102 · binary tree level order traversal](https://github.com/prdlk/leetcode/issues/106) | medium | topic 12 — tree bfs | new core problem |
|
||||
| `work/1` | [lc 199 · binary tree right side view](https://github.com/prdlk/leetcode/issues/107) | medium | topic 12 — tree bfs | new core problem |
|
||||
| `work/1` | [lc 1448 · count good nodes in binary tree](https://github.com/prdlk/leetcode/issues/108) | medium | topic 12 — tree bfs | new core problem |
|
||||
| `work/3` | [lc 146 · lru cache](https://github.com/prdlk/leetcode/issues/87) | medium | topic 09 — hybrid structures | on time — solved tue sep 1 |
|
||||
| `work/3` | [lc 2 · add two numbers](https://github.com/prdlk/leetcode/issues/88) | medium | topic 09 — hybrid structures | on time — solved tue sep 1 |
|
||||
| `work/3` | [lc 424 · longest repeating character replacement](https://github.com/prdlk/leetcode/issues/52) | medium | hash table | 6d stale — first solved 2026-08-25 |
|
||||
| `work/3` | [lc 567 · permutation in string](https://github.com/prdlk/leetcode/issues/53) | medium | hash table | 6d stale — first solved 2026-08-25 |
|
||||
| `work/3` | [lc 35 · search insert position](https://github.com/prdlk/leetcode/issues/63) | easy | array | 5d stale — first solved 2026-08-26 |
|
||||
| `work/3` | [lc 74 · search a 2d matrix](https://github.com/prdlk/leetcode/issues/61) | medium | array | 5d stale — first solved 2026-08-26 |
|
||||
| `work/3` | [lc 153 · find minimum in rotated sorted array](https://github.com/prdlk/leetcode/issues/62) | medium | array | 5d stale — first solved 2026-08-26 |
|
||||
|
||||
### sat sep 5 — 3 on-time reviews + 7 backlog = 10/10
|
||||
|
||||
*no new topic — saturday.*
|
||||
|
||||
| bucket | problem | difficulty | where | why |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `work/3` | [lc 48 · rotate image](https://github.com/prdlk/leetcode/issues/91) | medium | topic 10 — matrix index math | on time — solved wed sep 2 |
|
||||
| `work/3` | [lc 54 · spiral matrix](https://github.com/prdlk/leetcode/issues/92) | medium | topic 10 — matrix index math | on time — solved wed sep 2 |
|
||||
| `work/3` | [lc 73 · set matrix zeroes](https://github.com/prdlk/leetcode/issues/93) | medium | topic 10 — matrix index math | on time — solved wed sep 2 |
|
||||
| `work/3` | [lc 20 · valid parentheses](https://github.com/prdlk/leetcode/issues/67) | easy | string | 4d stale — first solved 2026-08-27 |
|
||||
| `work/3` | [lc 150 · evaluate reverse polish notation](https://github.com/prdlk/leetcode/issues/69) | medium | array | 4d stale — first solved 2026-08-27 |
|
||||
| `work/3` | [lc 155 · min stack](https://github.com/prdlk/leetcode/issues/68) | medium | stack | 4d stale — first solved 2026-08-27 |
|
||||
| `work/3` | [lc 739 · daily temperatures](https://github.com/prdlk/leetcode/issues/72) | medium | array | 3d stale — first solved 2026-08-28 |
|
||||
| `work/3` | [lc 853 · car fleet](https://github.com/prdlk/leetcode/issues/73) | medium | array | 3d stale — first solved 2026-08-28 |
|
||||
| `work/7` | lc 387 · first unique character in a string | easy | hash table | `+3` was mon aug 31 |
|
||||
| `work/7` | lc 1365 · how many numbers are smaller than the current number | easy | array | `+3` was mon aug 31 |
|
||||
|
||||
### sun sep 6 — rest day
|
||||
|
||||
nothing. by design.
|
||||
|
||||
## carry-over
|
||||
|
||||
the 34 re-solves that do not fit this week, at the same cap and the same rules. booked = that day's new core set plus the on-time reviews it owes.
|
||||
|
||||
| day | topic | booked | backlog re-solves | load |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| **mon sep 7** | topic 13 — binary search tree | 10 | *none — the day is already full* | 10/10 |
|
||||
| **tue sep 8** | topic 14 — heap / priority queue | 7 | `work/7` — lc 268, lc 344, lc 1426 | 10/10 |
|
||||
| **wed sep 9** | topic 15 — trie | 5 | `work/7` — lc 1832, lc 15, lc 49, lc 125, lc 167 | 10/10 |
|
||||
| **thu sep 10** | topic 16 — graph dfs | 9 | `work/7` — lc 217 | 10/10 |
|
||||
| **fri sep 11** | topic 17 — graph bfs | 8 | `work/7` — lc 238, lc 242 | 10/10 |
|
||||
| **sat sep 12** | *none — saturday* | 2 | `work/7` — lc 303, lc 560, lc 1413, lc 1480, lc 33, lc 704, lc 875, lc 977 | 10/10 |
|
||||
| **mon sep 14** | topic 18 — topological sort | 10 | *none — the day is already full* | 10/10 |
|
||||
| **tue sep 15** | topic 19 — union-find | 5 | `work/7` — lc 121, lc 1, lc 11, lc 392, lc 3 | 10/10 |
|
||||
| **wed sep 16** | topic 20 — backtracking | 5 | `work/7` — lc 424, lc 567, lc 35, lc 74, lc 153 | 10/10 |
|
||||
| **thu sep 17** | topic 21 — 1-d dynamic programming | 8 | `work/7` — lc 20, lc 150 | 10/10 |
|
||||
| **fri sep 18** | topic 22 — multi-d / grid dp | 7 | `work/7` — lc 155, lc 739, lc 853 | 10/10 |
|
||||
|
||||
## when standard srs resumes
|
||||
|
||||
- **sat sep 5** (campaign day 20) — the `+3` rung is empty. every one of the 36 has been recalled blind once; nothing is unretrieved any more.
|
||||
- **fri sep 18** (campaign day 33) — the last backlog `+7` lands. `work/3` and `work/7` hold a file for all 36, so `reviewqueues()` owes nothing; the 28 that have a d1 row are `retired` on the ladder, and the 8 listed at the bottom of this file never had one.
|
||||
- **sat sep 19 onward — standard srs.** the only reviews left are the ones the campaign itself minted: solve a problem, its `+3` and `+7` come back on `workingday(solve + 3)` and `workingday(solve + 7)`, the digest asks for ≤ `review_cap` (3) a day, `levelreviews()` pushes any excess forward, and `bun run pick`'s 3-day and 7-day sections show only what is due. no dated plan needed after this — the digest *is* the plan.
|
||||
|
||||
campaign-native load per working day once the backlog is gone, all of it inside the cap:
|
||||
|
||||
| day | topic | new | `work/3` | `work/7` | load |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| **sat sep 19** | *review-only* | 0 | 3 | 0 | 3/10 |
|
||||
| **mon sep 21** | topic 23 — greedy | 3 | 5 | 2 | 10/10 |
|
||||
| **tue sep 22** | topic 24 — intervals | 3 | 1 | 2 | 6/10 |
|
||||
| **wed sep 23** | *review-only* | 0 | 0 | 3 | 3/10 |
|
||||
| **thu sep 24** | *review-only* | 0 | 3 | 3 | 6/10 |
|
||||
| **fri sep 25** | *review-only* | 0 | 3 | 3 | 6/10 |
|
||||
| **sat sep 26** | *review-only* | 0 | 0 | 0 | 0/10 |
|
||||
| **mon sep 28** | *review-only* | 0 | 0 | 3 | 3/10 |
|
||||
| **tue sep 29** | *review-only* | 0 | 0 | 3 | 3/10 |
|
||||
|
||||
two things to watch there. **mon sep 21 is 10/10 on campaign load alone** — topic 23's core set, two `+7`s, and five of the six `+3`s that land there (thursday's three slide off sunday onto monday, friday's three land natively, and the sixth is pushed to tuesday exactly as `levelreviews()` would) — so one slipped day re-opens a backlog. and from **wed sep 30** the ladder runs dry: `apps/api/data/schedule.json` books its last topic tue sep 22, so the review-only weeks that close the campaign are drills, optional sets and the weekly gates, none of which this file counts.
|
||||
|
||||
## not reviews
|
||||
|
||||
three july scaffolds in `work/1` are still empty, so they owe no re-solve — they are unsolved problems, and `bun run pick` still lists them in its new-problem section:
|
||||
|
||||
| problem | difficulty |
|
||||
| --- | --- |
|
||||
| [lc 347 · top k frequent elements](https://github.com/prdlk/leetcode/issues/31) | medium |
|
||||
| lc 451 · sort characters by frequency | medium |
|
||||
| lc 1636 · sort array by increasing frequency | easy |
|
||||
|
||||
## what this plan exposes
|
||||
|
||||
- **8 of the 36 have no problem issue** (387, 1365, 268, 344, 1426, 1832, 1413, 1480) — pre-campaign solves. the catalog reconcile never invents rows, so d1 does not know them and no digest can ever surface them. `bun run pick` is the only thing that will ask for these reviews.
|
||||
- **`/api/stats` reports a stage that does not exist**: `ladder: { new: 128, "+3": 3, "+7": 0, retired: 0, "+2": 30 }`. `+2` is not in `stages` (`apps/api/src/srs.ts`), so 30 rows sit on a pre-`0002` rung — which is why the digest queue plateaus at 32 due instead of tracking the tables above. that wants a migration, not a re-solve.
|
||||
Reference in New Issue
Block a user