Question notebook / deliberate practice
One pattern.
Several ways to see it.
81 complete lessons, each with an editable animation and unseen-input practice. All 75 Blind 75 originals have a linked, independently written variant here. Changes to the original contract are stated on each lesson.
Original scenarios and examples. About Blind 75 and its author ↗
A packing belt carries items with positive integer weights. Find the first pair completed while scanning left to right that exactly fills a parcel. Return their zero-based positions; if several earlier partners fit, use the earliest one. Return [] if no pair fits.
A receiver records lowercase letter codes. Return the longest continuous segment with no repeated code, not just its length. If segments tie, return the earliest one.
An account has an opening balance and a grouped adjustment note. Evaluate its whole-number additions, subtractions, and parentheses, then return the closing balance. No multiplication or division.
Stack + running total
A warehouse directory has a name and any number of child shelves, not just two. Return the shelf names grouped by depth, preserving the order of children.
A delivery robot crosses a square floor from top-left to bottom-right. Cells marked 1 contain noisy machines. Maximize the smallest Manhattan distance to any machine along the walk. Return both the clearance and an actual route.
Multi-source BFS + heapMatrix diagram
A shuttle records numeric stop IDs for each visit. Return k stops ordered from most visited to least visited. Break frequency ties by the smaller stop ID, even at the cutoff.
A depot records signed stock changes: arrivals are positive and departures are negative. Count every nonempty contiguous run whose total equals the requested change. Overlapping runs count separately.
Prefix sums + frequency map
A sign maker can stock at most k distinct lowercase letter stamps. Return the longest continuous piece of a message that fits that budget. Repeated letters are allowed. If lengths tie, keep the earliest piece.
Frequency-count sliding window
A workshop receives one material-price quote per day. For each day, return how many days it takes to see a strictly lower quote. Return 0 if no later lower quote exists. Equal prices do not qualify.
Monotonic stack
A storage directory has named nodes with any number of children. Return the names along a root-to-leaf route with the most nodes. For tied depths, choose the first route in left-to-right child order. Return [] for an empty directory.
A rectangular garden map uses 1 for planted ground and 0 for walkways. Planted cells belong to the same plot only when connected up, down, left, or right. Return every plot size sorted largest first. Keep equal sizes as separate entries.
A technician must join all cable reels into one. Joining lengths a and b costs a + b units of work, and the joined reel can be used again. Return the minimum total work, not the final cable length.
Min-heap + greedy merging
A market posts one price per day. Buy once, then sell on a later day. Return the largest possible profit; choosing not to trade is allowed and earns 0.
For every sensor position, return the product of all other readings. Do not divide. Negative readings and zeros are allowed.
Signed readings represent energy gained or lost at consecutive stations. Return the largest sum of a nonempty continuous run. At least one reading is required.
A lowercase label must contain every requested letter, including repeated requests. Return its shortest continuous piece that covers the request. Ties keep the earliest piece; no covering piece returns "".
Return the longest continuous piece of a lowercase message that reads the same forward and backward. Ties keep the earliest piece.
A crate tag uses only (), [] and {} to mark nested groups. Return true only when every closing mark matches the most recent unclosed opening mark and nothing remains open.
A square camera frame contains integer pixel labels. Return a new frame rotated 90° clockwise. Keep the original unchanged; this variant deliberately uses an output matrix rather than an in-place rotation.
Read a rectangular label matrix clockwise from its top-left corner, peeling one outer border at a time. Return the labels in reading order without changing the matrix.
A zero sensor reading means its entire row and column are faulty. Return a new matrix with those lines zeroed based only on the original zeros. Do not let newly written zeros trigger more clearing.
Find whether a requested lowercase word can be traced on a letter board using side-sharing cells. A cell may be used only once in a route. Return true or false; diagonal steps are not allowed.
Voucher tokens have positive integer values and unlimited supply. Return the fewest tokens that pay an exact amount, or -1 when it cannot be paid. Amount 0 needs no tokens.
Each platform lists the maximum forward jump from it. Start at position 0 and choose any jump from 1 up to that limit. Return whether the last platform is reachable.
A gate logs integer badge IDs. Return [earliest previous position, current position] for the first repeat completed while scanning left to right, or [] if every badge is new. Variant: report the first repeated pair instead of a boolean.
Signed integer gain settings form a line of amplifiers. Choose a nonempty continuous chain and return its largest product. Negative settings reverse the sign and zero resets a chain. Original scenario; the maximum-product task is unchanged.
Distinct dispatch numbers were sorted increasingly, then cyclically rotated. Return the zero-based position of the smallest number, the restart point. Variant: return its position rather than its value.
Distinct dispatch numbers form a cyclic rotation of an increasing list. Return the position of the requested number, or -1 if it is absent. Original dispatch-log scenario; the search contract is unchanged.
Choose three different positions whose signed readings sum to the requested calibration total. Return unique value triples, each increasing, in lexicographic order. Variant: the target is configurable, not always zero. Equal readings may be used only when enough separate positions exist.
Vertical posts stand one unit apart. Choose two posts and return the largest rectangular water area: their separation times the shorter height. Original rain-reservoir scenario; the area contract is unchanged. Fewer than two posts gives 0.
Add two unsigned byte counters without + or - in the addition algorithm. Return their 8-bit wrapped sum, from 0 to 255. Variant: unsigned 8-bit arithmetic replaces the original signed-integer domain; overflow wraps modulo 256.
A byte describes eight on/off switches. Return how many are enabled. Variant: the display and input use unsigned 8-bit values rather than a 32-bit word.
Return the number of enabled bits for every counter value from 0 through the inclusive maximum. Original lookup-table scenario; the counting-bits contract is unchanged. The educational maximum is 31.
Tickets were numbered 0 through n, but exactly one is absent from the n scanned IDs. Return the missing ID. Original ticket scenario; the task is unchanged. IDs must be distinct.
Reverse all eight positions of an unsigned byte and return the resulting integer. Variant: exactly 8 bits, not 32; leading zeros are real positions and must be reversed too.
An observatory stairway allows moves of one or two steps. Return the number of ordered move sequences that reach exactly n steps. Original scenario; n = 0 is explicitly one empty route.
dynamic-programming
MediumReadings arrive in time order. Select a strictly increasing subsequence, allowing skipped readings, and return its largest possible length. Original sensor scenario; equal readings cannot extend a trail.
dynamic-programming
MediumTwo lowercase beacon transcripts may skip letters. Return the length of their longest shared subsequence, preserving order in both. Original alignment scenario; this is not a common substring.
dynamic-programming
MediumA lowercase field note lost its spaces. Decide whether the whole note can be split into dictionary words, reusing words as needed. Original scenario; the empty note is explicitly segmentable. Supply distinct dictionary words as comma-separated plain parameter text.
dynamic-programming
MediumA program consists of positive-valued tokens. Count ordered token sequences whose values total the requested amount; each token value can be used repeatedly. Original program scenario; [1,3] and [3,1] are different programs.
dynamic-programming
MediumA line of galleries offers nonnegative inspection rewards. Adjacent galleries share a guard shift, so select no two neighbors. Return the greatest total reward; checking none is allowed. Original inspection scenario; the nonadjacent-maximization task is unchanged.
dynamic-programming
MediumGallery rewards form a ring: the first and last galleries are also neighbors. Select no adjacent galleries and return the largest reward. Original courtyard scenario; one gallery can be checked, and an empty ring earns 0.
dynamic-programming
MediumBeacon letters use numbers 1 through 26. Count the ways to split a digit message into valid letter numbers. A lone zero and a leading-zero number are invalid. Original beacon scenario; an empty received message returns 0.
dynamic-programming
MediumA rectangular roof garden has no blocked cells. Count paths from its top-left cell to its bottom-right cell, moving only right or down. Original garden scenario; the standard dimensions-and-count contract is unchanged.
A beacon log uses uppercase ASCII letters. Repaint at most k positions so one continuous run has a single letter. Return the largest run length, not the repainted text. Empty logs return 0.
Two lowercase ASCII crate labels are interchangeable when their letter inventories agree, including repeated letters. Given a JSON object with left and right strings, return an explicit boolean.
Bundle lowercase ASCII labels with identical letter inventories. Preserve duplicates. Sort each bundle alphabetically, then sort the bundles lexicographically so the returned JSON is deterministic.
A stamp may contain printable ASCII text. Ignore everything except ASCII letters and digits, compare letters without case, and return whether the remaining sequence reads equally in both directions.
Count every nonempty palindromic slice of a lowercase ASCII message. Different positions count separately even when their text is identical. Return a number, not distinct fragment texts.
Given a JSON list of ASCII strings (including empty strings and # marks), return {"encoded": string, "decoded": list}. Frame each label as decimal character length, #, then exactly that many characters. Decode your own encoding and preserve every label.
Build a singly linked relay chain from a JSON list of integer readings. Reverse its next pointers and return the readings reached from the new head. Node identity is its original index, even for equal readings.
Starting at node 0, detect a repeated node by identity. Input is an acyclic JSON list, or {"values":[...],"cycle":null|index} linking the tail to an index, or {"values":[...],"next":[null|index,...]} specifying every pointer. Explicit-pointer nodes must all be reachable from node 0.
Build two nondecreasing singly linked chains from {"left":[...],"right":[...]}. Relink their existing nodes into one nondecreasing chain and return its readings. On equal values take the left node first.
Build a chain for every row in a JSON list of sorted integer lists. Relink nodes into one sorted chain and return its readings. Heap ties use source index then original node position for deterministic identity order.
Build a nonempty singly linked chain from a JSON integer list. Given parameter n (1 through chain length), remove the nth node counted from the tail, detach it, and return the remaining readings.
Build a singly linked chain and relink it in first, last, second, next-to-last order, without changing any node’s reading. Return the new reading sequence; empty and single-node chains stay unchanged.
Given {"intervals":[[start,end],...],"new":[start,end]}, insert a closed coverage span and coalesce all overlap. Existing spans must be sorted and already separated: each next start must exceed the previous end. Touching endpoints count as overlap. Every span has start < end.
Given unsorted closed [start,end] coverage spans, return their sorted coalesced union. Touching endpoints merge, nested spans do not create new output rows, and each input start is strictly less than its end.
Reservations use half-open [start,end) times with start < end. Return the minimum number to discard so one resource can accept all remaining reservations. Ending exactly when another starts is compatible.
A guide has unsorted half-open [start,end) appointments. Return an explicit boolean for whether one guide can attend every appointment. Each start < end; an appointment ending at the next start is allowed.
Workshops use unsorted half-open [start,end) spans. Return the fewest rooms needed for all workshops. Each start < end; a room is free at its ending time and can be reused immediately.
Compare two binary sensor trees in {"a":[...],"b":[...]}. Return true only when values and missing-child positions agree. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
Swap every binary node’s left and right subtrees. Return the mirrored tree in indexed slot format. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
A route may start and end at any nodes in a binary sensor tree but cannot branch or reuse a node. Return its maximum total reading. Empty input returns 0. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
Encode a binary tree in preorder with explicit null markers, reconstruct fresh nodes, and return {"encoded":[...],"decoded":[...]}. The decoded tree uses the input slot format. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
Given trees {"a":[...],"b":[...]}, return whether b exactly matches a complete subtree of a. An empty candidate is always a match. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
Given distinct values in {"preorder":[...],"inorder":[...]}, reconstruct the binary tree and return indexed slots. Logs must describe the same tree. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
Return whether every binary node is strictly larger than all values in its left subtree and strictly smaller than all values in its right subtree. Duplicate values are invalid. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
For a valid distinct-valued binary search tree, return the kth smallest reading. Parameter k is one-based and must identify an existing node. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
Given {"tree":[...],"p":number,"q":number} for an ordered binary rack, return the deepest node whose subtree contains both readings. A node counts as its own descendant; both values must exist. Binary input arrays use heap-indexed slots: children of slot i are 2i+1 and 2i+2; null is an absent node.
Run ["add",word], ["search",word] and ["prefix",prefix] operations on a lowercase-code trie. Return one result per operation: null for add, boolean for queries.
Run ["add",word] and ["search",pattern] operations. A dot in a query matches exactly one lowercase letter. Return null for additions and booleans for searches.
Given {"board":[[letters]],"words":[...]}, return all listed words traceable through side-sharing tiles without reusing a tile in one route. Return unique found words alphabetically.
Copy every vertex and neighbor list in an undirected adjacency-list network, including disconnected components. Return the independent copy’s adjacency lists in vertex-ID order. Neighbor order is preserved.
Given {"count":n,"pairs":[[course,prerequisite],...]}, determine whether every workshop can be completed. IDs range from 0 to n-1; dependency cycles make the answer false.
Water can move to an orthogonal neighbor of equal or lower height. Return cells that can drain to both top/left and bottom/right boundary groups. Sort [row,column] pairs in row-major order.
Unsorted badge IDs may repeat. Return the length of the longest run of consecutive distinct integers, regardless of input order.
Labels arrive in a claimed alphabetic order. Infer the lexicographically smallest alphabet satisfying all observed first-difference constraints. Return "" for a cycle or a longer word before its prefix.
Given {"count":n,"edges":[[a,b],...]}, determine whether the undirected relay network is one connected, cycle-free tree. An empty network returns false.
Count connected groups in {"count":n,"edges":[[a,b],...]}. Isolated vertices count as their own groups; an empty network has zero groups.
Sensor readings arrive one at a time. Return the median after every arrival. For an even number of readings, average the two middle values; keep duplicate readings as separate observations.
No questions match those filters. Try another pattern or topic.