Problems

Each problem is the last step of a short ladder. Its building blocks are moves you can name; when every block is in place, the problem is those moves assembled. If one feels impossible, the missing block is listed here.

0
of 52 solved
0
ready to attempt
—
target conversion: none attempted yet

1 Hashing· 0 of 5 solved

  • LC 242 · first solve in Reps

    Valid Anagram

    0 of 2 blocks ready2 reps to go
    Show the 2 building blocks
    • dictionary ladder (not yet)1 rep
    • the lead-in reps (not yet)1 rep

    Skills still thinfrequency mapdict.getstring iteration

  • LC 1 · first solve in Reps

    Two Sum

    0 of 3 blocks ready12 reps to go
    Show the 3 building blocks
    • index maps (not yet)5 reps
    • complements (not yet)5 reps
    • the lead-in reps (not yet)2 reps

    Skills still thinenumerateindex mapdict membership

  • LC 49 · on NeetCode

    Group Anagrams

    0 of 3 blocks ready4 reps to go
    Show the 3 building blocks
    • collect items under a key in a dict of lists (not yet)1 rep
    • turn each item into a key a dict accepts (not yet)2 reps
    • group by a computed key and hand back the groups (not yet)1 rep

    Skills still thindict membershiplist.appendsorted / .sort

  • LC 128 · on NeetCode

    Longest Consecutive Sequence

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • put the numbers in a set (not yet)1 rep
    • extend a run and measure it (not yet)2 reps
    • spot where a run starts (not yet)1 rep
    • only count from starts (not yet)2 reps

    Skills still thinset creationset membershipwhile loop

  • LC 238 · on NeetCode

    Product of Array Except Self

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • carry a running total through a scan (not yet)1 rep
    • record what came before each position (not yet)2 reps
    • walk from the right for what comes after (not yet)1 rep
    • combine both sides without overwriting (not yet)2 reps

    Skills still thinaccumulator variablelist indexingrange()

2 Strings + two pointers· 0 of 5 solved

3 Sliding window· 0 of 2 solved

  • LC 3 · first solve in Reps

    Longest Substring Without Repeating Characters

    0 of 2 blocks ready12 reps to go
    Show the 2 building blocks
    • windows (not yet)6 reps
    • window state (not yet)6 reps

    Skills still thinsliding windowwindow stateset membership

  • LC 424 · on NeetCode

    Longest Repeating Character Replacement

    0 of 4 blocks ready7 reps to go
    Show the 4 building blocks
    • grow and shrink a window that carries a count map (not yet)2 reps
    • work out how many letters would have to change (not yet)2 reps
    • keep the counts true as the window slides (not yet)2 reps
    • shrink while too many changes are needed (not yet)1 rep

    Skills still thinsliding windowwindow statefrequency map

4 Stacks· 0 of 1 solved

5 Binary search· 0 of 2 solved

  • LC 704 · first solve in Reps

    Binary Search

    0 of 3 blocks ready16 reps to go
    Show the 3 building blocks
    • while + indexes (not yet)3 reps
    • binary search (not yet)6 reps
    • search variants (not yet)7 reps

    Skills still thinbinary searchmid calculationsearch invariant

  • LC 153 · on NeetCode

    Find Minimum in Rotated Sorted Array

    0 of 4 blocks ready7 reps to go
    Show the 4 building blocks
    • halve a range with lo, mid and hi (not yet)2 reps
    • keep mid in range and loop while lo < hi (not yet)1 rep
    • compare the middle with the right end (not yet)2 reps
    • close in on the smallest value (not yet)2 reps

    Skills still thinbinary searchmid calculationsearch invariant

6 Linked lists· 0 of 4 solved

7 Recursion + trees· 0 of 7 solved

  • LC 104 · first solve in Reps

    Maximum Depth of Binary Tree

    0 of 4 blocks ready18 reps to go
    Show the 4 building blocks
    • functions (not yet)3 reps
    • recursion (not yet)5 reps
    • treenode (not yet)3 reps
    • tree dfs (not yet)7 reps

    Skills still thintree DFSbase caserecursive return

  • LC 100 · first solve in Reps

    Same Tree

    0 of 1 blocks ready5 reps to go
    Show the 1 building blocks
    • two trees at once (not yet)5 reps

    Skills still thintree DFSbase caserecursive return

  • LC 226 · first solve in Reps

    Invert Binary Tree

    0 of 1 blocks ready4 reps to go
    Show the 1 building blocks
    • changing trees (not yet)4 reps

    Skills still thintree DFSbase caseTreeNode

  • LC 572 · on NeetCode

    Subtree of Another Tree

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • compare two trees node by node (not yet)2 reps
    • visit every node and combine the answers (not yet)1 rep
    • ask the helper at every node (not yet)2 reps
    • handle the empty cases and stop at the first match (not yet)1 rep

    Skills still thintree DFSbase caserecursive return

  • LC 235 · on NeetCode

    Lowest Common Ancestor of a Binary Search Tree

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • search an unsorted tree everywhere (not yet)1 rep
    • walk a search tree one way (not yet)1 rep
    • remember a candidate while walking (not yet)1 rep
    • find where two values part ways (not yet)2 reps

    Skills still thinTreeNodewhile loopBST ordering

  • LC 98 · on NeetCode

    Validate Binary Search Tree

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • check every node and combine with and (not yet)2 reps
    • pass bounds down the tree (not yet)1 rep
    • tighten one bound at each step (not yet)1 rep
    • check each node against every ancestor (not yet)2 reps

    Skills still thintree DFSrecursive returnBST ordering

  • LC 230 · on NeetCode

    Kth Smallest Element in a BST

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • visit left, node, right (not yet)1 rep
    • read a search tree in sorted order (not yet)2 reps
    • count visits in a shared counter (not yet)1 rep
    • stop as soon as the count is reached (not yet)1 rep

    Skills still thintree DFSBST orderingin-order traversal

8 Tries· 0 of 2 solved

9 BFS + grids· 0 of 2 solved

10 Graphs· 0 of 3 solved

  • LC 207 · first solve in Reps

    Course Schedule

    0 of 6 blocks ready27 reps to go
    Show the 6 building blocks
    • adjacency lists (not yet)5 reps
    • graph dfs (not yet)6 reps
    • graph bfs (not yet)5 reps
    • path exists (not yet)2 reps
    • components (not yet)3 reps
    • directed cycles (not yet)6 reps

    Skills still thincycle detectionadjacency listgraph DFS

  • LC 133 · on NeetCode

    Clone Graph

    0 of 4 blocks ready7 reps to go
    Show the 4 building blocks
    • walk a graph without going round in circles (not yet)2 reps
    • give every node a fresh neighbour list (not yet)1 rep
    • map each original to its copy (not yet)2 reps
    • register the copy before recursing (not yet)2 reps

    Skills still thingraph DFSvisited setdict membership

  • LC 323 · on NeetCode

    Number of Connected Components in an Undirected Graph

    0 of 5 blocks ready6 reps to go
    Show the 5 building blocks
    • build the adjacency list from edges (not yet)1 rep
    • walk one whole group (not yet)2 reps
    • start a walk from each unvisited node (not yet)1 rep
    • give nodes with no edges a key (not yet)1 rep
    • count or measure the groups (not yet)1 rep

    Skills still thinadjacency listgraph DFSvisited set

11 Sorting + heaps· 0 of 2 solved

12 Intervals· 0 of 4 solved

  • LC 56 · first solve in Reps

    Merge Intervals

    0 of 1 blocks ready6 reps to go
    Show the 1 building blocks
    • intervals (not yet)6 reps

    Skills still thincustom sort keysinterval overlaplist indexing

  • LC 57 · on NeetCode

    Insert Interval

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • merge overlapping intervals (not yet)2 reps
    • tell before, overlapping and after apart (not yet)1 rep
    • widen the new interval over every overlap (not yet)2 reps
    • run the three phases in order (not yet)1 rep

    Skills still thininterval overlapwhile loopthree-phase interval scan

  • LC 252 · on NeetCode

    Meeting Rooms

    0 of 4 blocks ready4 reps to go
    Show the 4 building blocks
    • sort the intervals by start (not yet)1 rep
    • compare each start with the previous end (not yet)1 rep
    • stop at the first clash (not yet)1 rep
    • check a whole schedule (not yet)1 rep

    Skills still thincustom sort keysinterval overlap

  • LC 253 · on NeetCode

    Meeting Rooms II

    0 of 5 blocks ready8 reps to go
    Show the 5 building blocks
    • push and pop a min-heap (not yet)2 reps
    • sort the meetings by start (not yet)1 rep
    • reuse the earliest-ending room or open a new one (not yet)2 reps
    • read the answer from the heap size (not yet)2 reps
    • count the rooms for a whole schedule (not yet)1 rep

    Skills still thinsorted / .sortheapq push/popinterval overlap

13 Backtracking· 0 of 2 solved

  • LC 78 · first solve in Reps

    Subsets

    0 of 3 blocks ready14 reps to go
    Show the 3 building blocks
    • decision trees (not yet)5 reps
    • path state (not yet)6 reps
    • the lead-in reps (not yet)3 reps

    Skills still thinbacktracking statebase case

  • LC 39 · on NeetCode

    Combination Sum

    0 of 5 blocks ready9 reps to go
    Show the 5 building blocks
    • choose, recurse and un-choose with one path (not yet)2 reps
    • keep picks from going backwards with a start index (not yet)2 reps
    • pass i to reuse a number, i + 1 to use it once (not yet)2 reps
    • carry the remaining total and stop below zero (not yet)1 rep
    • list each combination once, whatever the order (not yet)2 reps

    Skills still thinbacktracking statebase casestart index & reuse

14 Dynamic programming· 0 of 9 solved

  • LC 70 · first solve in Reps

    Climbing Stairs

    0 of 3 blocks ready15 reps to go
    Show the 3 building blocks
    • recurrences (not yet)4 reps
    • memoization (not yet)6 reps
    • bottom-up dp (not yet)5 reps

    Skills still thinrecurrence reasoningmemoizationbottom-up DP

  • LC 198 · first solve in Reps

    House Robber

    0 of 1 blocks ready5 reps to go
    Show the 1 building blocks
    • rolling state (not yet)5 reps

    Skills still thinrecurrence reasoningbottom-up DPrunning state

  • LC 213 · on NeetCode

    House Robber II

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • take or skip along a straight row (not yet)2 reps
    • cut the ring into two lines (not yet)1 rep
    • answer a ring of one before splitting (not yet)1 rep
    • solve both lines and keep the better (not yet)1 rep

    Skills still thinbottom-up DPrecurrence reasoningrunning state

  • LC 53 · on NeetCode

    Maximum Subarray

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • carry a best-so-far through one pass (not yet)2 reps
    • extend the run or start fresh (not yet)2 reps
    • start from the first value, not from zero (not yet)1 rep
    • track the best run ending anywhere (not yet)1 rep

    Skills still thinrunning stateaccumulator variablebest ending here

  • LC 55 · on NeetCode

    Jump Game

    0 of 3 blocks ready4 reps to go
    Show the 3 building blocks
    • keep one running best in a single pass (not yet)1 rep
    • push the farthest reach forward (not yet)1 rep
    • stop when the scan passes the reach (not yet)2 reps

    Skills still thinenumeraterunning stateearly return

  • LC 322 · on NeetCode

    Coin Change

    0 of 5 blocks ready7 reps to go
    Show the 5 building blocks
    • fill a table from smaller amounts (not yet)2 reps
    • mark which amounts can be made (not yet)1 rep
    • keep the fewest over every choice (not yet)2 reps
    • let infinity stand for cannot (not yet)1 rep
    • turn infinity into -1 at the end (not yet)1 rep

    Skills still thinbottom-up DPrecurrence reasoningrange()

  • LC 139 · on NeetCode

    Word Break

    0 of 5 blocks ready6 reps to go
    Show the 5 building blocks
    • fill a table from earlier entries (not yet)1 rep
    • test the last piece against the word set (not yet)1 rep
    • fill a table over prefix lengths (not yet)2 reps
    • mark the empty prefix as done (not yet)1 rep
    • join an earlier split to one last piece (not yet)1 rep

    Skills still thinbottom-up DPslicingset membership

  • LC 300 · on NeetCode

    Longest Increasing Subsequence

    0 of 3 blocks ready5 reps to go
    Show the 3 building blocks
    • define each entry as the best ending at that index (not yet)1 rep
    • look back at every earlier index that fits (not yet)2 reps
    • answer with the best entry, not the last (not yet)2 reps

    Skills still thinbottom-up DPrecurrence reasoningrange()

  • LC 62 · on NeetCode

    Unique Paths

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • count routes from the cell above and the cell to the left (not yet)2 reps
    • build a table of separate rows (not yet)2 reps
    • fill each cell from above and left (not yet)1 rep
    • fill the edges first, then the inside (not yet)1 rep

    Skills still thinrecurrence reasoningnested lists / gridsbottom-up DP

15 Matrix· 0 of 2 solved

  • LC 48 · on NeetCode

    Rotate Image

    0 of 3 blocks ready6 reps to go
    Show the 3 building blocks
    • transpose a square matrix in place (not yet)2 reps
    • reverse each row, or the order of the rows (not yet)2 reps
    • see a quarter turn as two flips (not yet)2 reps

    Skills still thinnested lists / gridstranspose & reverse in placerange()

  • LC 54 · on NeetCode

    Spiral Matrix

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • walk one edge between two bounds (not yet)2 reps
    • guard a single remaining row or column (not yet)2 reps
    • loop while the bounds have not crossed (not yet)1 rep
    • chain the four walks, shrinking a bound after each (not yet)1 rep

    Skills still thinnested lists / gridsrange()while loop

When you are ahead

These have their bridges ready but do not fit inside the 90 days at the plan’s pace. They are next in, most valuable first, whenever the gauge says you are ahead. Their bridge reps are in the day pages as extras.

  • LC 33 · on NeetCode

    Search in Rotated Sorted Array

    0 of 5 blocks ready8 reps to go
    Show the 5 building blocks
    • search an inclusive range for one value (not yet)2 reps
    • compare the middle with an end of the range (not yet)2 reps
    • tell which half is sorted (not yet)1 rep
    • test whether the target lies inside the sorted half (not yet)2 reps
    • search a rotated list for a target (not yet)1 rep
  • LC 73 · on NeetCode

    Set Matrix Zeroes

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • collect the rows and columns to change, then change them (not yet)2 reps
    • remember whether the first row and column need changing (not yet)1 rep
    • read those two answers before writing any marks (not yet)1 rep
    • use the first row and column as the marks (not yet)1 rep
  • LC 435 · on NeetCode

    Non-overlapping Intervals

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • sort records by a chosen field (not yet)1 rep
    • keep what starts after the last kept end (not yet)1 rep
    • sort by end, not by start (not yet)2 reps
    • turn the most kept into the fewest removed (not yet)1 rep
  • LC 79 · on NeetCode

    Word Search

    0 of 5 blocks ready7 reps to go
    Show the 5 building blocks
    • step to the four neighbours and stay in bounds (not yet)2 reps
    • check a cell: in bounds, right letter, not used (not yet)1 rep
    • recurse from a cell for the next letter (not yet)1 rep
    • mark the cell, try the neighbours, unmark it (not yet)2 reps
    • try every cell as the start (not yet)1 rep
  • LC 5 · on NeetCode

    Longest Palindromic Substring

    0 of 4 blocks ready6 reps to go
    Show the 4 building blocks
    • compare two ends with two pointers (not yet)2 reps
    • grow outward while the ends match (not yet)1 rep
    • turn the stopped pointers into a slice (not yet)1 rep
    • try an odd and an even center (not yet)2 reps
  • LC 143 · on NeetCode

    Reorder List

    0 of 5 blocks ready6 reps to go
    Show the 5 building blocks
    • weave two lists together (not yet)2 reps
    • cut the list at its middle (not yet)1 rep
    • reverse a list in place (not yet)1 rep
    • cut, then weave, in place (not yet)1 rep
    • cut, reverse, then walk both halves (not yet)1 rep
  • LC 261 · on NeetCode

    Graph Valid Tree

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • build the adjacency list from edges (not yet)1 rep
    • reach every node from node 0 (not yet)2 reps
    • check the edge count and the reach together (not yet)1 rep
    • count the edges a connected graph needs (not yet)1 rep
  • LC 1143 · on NeetCode

    Longest Common Subsequence

    0 of 5 blocks ready7 reps to go
    Show the 5 building blocks
    • fill a grid from above and left (not yet)2 reps
    • pad the table by one row and one column (not yet)1 rep
    • read each string one index behind the table (not yet)2 reps
    • extend the diagonal on a match (not yet)1 rep
    • carry the better neighbour on a mismatch (not yet)1 rep
  • LC 105 · on NeetCode

    Construct Binary Tree from Preorder and Inorder Traversal

    0 of 5 blocks ready6 reps to go
    Show the 5 building blocks
    • make a node and attach its subtrees (not yet)1 rep
    • split the in-order list around the root (not yet)1 rep
    • cut the pre-order list by the left size (not yet)2 reps
    • build each side recursively and return the root (not yet)1 rep
    • rebuild a tree from two traversals (not yet)1 rep
  • LC 417 · on NeetCode

    Pacific Atlantic Water Flow

    0 of 5 blocks ready7 reps to go
    Show the 5 building blocks
    • walk a grid with a visited set (not yet)2 reps
    • collect the cells on an edge (not yet)1 rep
    • spread from many starts into one set (not yet)1 rep
    • walk uphill from the edge (not yet)2 reps
    • keep the cells both walks reached (not yet)1 rep
  • LC 271 · on NeetCode

    Encode and Decode Strings

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • see why a plain separator breaks (not yet)1 rep
    • write each item as length, marker, text (not yet)1 rep
    • read a length up to the marker, slice, advance (not yet)1 rep
    • hop through the whole string item by item (not yet)2 reps
  • LC 23 · on NeetCode

    Merge k Sorted Lists

    0 of 4 blocks ready5 reps to go
    Show the 4 building blocks
    • merge two sorted lists (not yet)1 rep
    • fold many lists into one (not yet)1 rep
    • pair up neighbours for one round (not yet)1 rep
    • repeat rounds until one list is left (not yet)2 reps
  • LC 124 · on NeetCode

    Binary Tree Maximum Path Sum

    0 of 5 blocks ready7 reps to go
    Show the 5 building blocks
    • return the height of a subtree (not yet)1 rep
    • return one arm and record the bend (not yet)3 reps
    • drop an arm that makes the sum worse (not yet)1 rep
    • join two arms at one node (not yet)1 rep
    • do both at every node in one pass (not yet)1 rep
  • LC 76 · on NeetCode

    Minimum Window Substring

    0 of 6 blocks ready10 reps to go
    Show the 6 building blocks
    • count what the target needs (not yet)2 reps
    • check that a window covers every need (not yet)1 rep
    • tally the needs met as characters enter and leave (not yet)3 reps
    • shrink while the window is still valid (not yet)2 reps
    • remember the smallest window found (not yet)1 rep
    • grow until covered, then shrink and record (not yet)1 rep
  • LC 91 · on NeetCode

    Decode Ways

    0 of 5 blocks ready6 reps to go
    Show the 5 building blocks
    • count the ways over prefix lengths (not yet)2 reps
    • add the counts from one back and two back (not yet)1 rep
    • judge a one- or two-digit piece (not yet)1 rep
    • reject a piece with a leading zero (not yet)1 rep
    • sum the ways from both piece sizes (not yet)1 rep

Capstones outside the plan