Small challenges.
Stronger problem solving.
352 programming exercises and projects, from interview patterns to practical data automation.
50 problems
01Count predicate matchesJavaScript · Complexity and contractsEasyFree02Count index pairsJavaScript · Complexity and contractsEasyFree03Build prefix sumsJavaScript · Arrays and prefix computationsEasyFree04Answer half-open range queriesJavaScript · Arrays and prefix computationsEasyFree05Rotate an array without mutationJavaScript · Arrays and prefix computationsEasyFree06Count integer frequenciesJavaScript · Maps and lookup invariantsMediumPractice pack07Find the earliest finishing pairJavaScript · Maps and lookup invariantsMediumPractice pack08Keep first occurrencesJavaScript · Sets and membershipMediumPractice pack09Intersect two sets deterministicallyJavaScript · Sets and membershipMediumPractice pack10Validate bracket nestingJavaScript · Stacks and unresolved workMediumPractice pack11Find the next greater valueJavaScript · Stacks and unresolved workMediumPractice pack12Simulate a FIFO queueJavaScript · Queues and moving windowsMediumPractice pack13Compute fixed-window sumsJavaScript · Queues and moving windowsMediumPractice pack14Traverse an indexed linked listJavaScript · Linked structures and pointer reasoningMediumPractice pack15Detect a linked-list cycleJavaScript · Linked structures and pointer reasoningMediumPractice pack16Find the lower insertion positionJavaScript · Binary search and boundary invariantsMediumPractice pack17Find the first exact matchJavaScript · Binary search and boundary invariantsMediumPractice pack18Merge sorted arraysJavaScript · Sorting and mergingMediumPractice pack19Implement insertion sortJavaScript · Sorting and mergingMediumPractice pack20Implement merge sortJavaScript · Sorting and mergingMediumPractice pack21Write a recursive base caseJavaScript · Recursion and decreasing measuresMediumPractice pack22Flatten nested integer listsJavaScript · Recursion and decreasing measuresMediumPractice pack23Exponentiate by squaringJavaScript · Recursion and decreasing measuresMediumPractice pack24Traverse a binary tree in orderJavaScript · Binary-tree traversalMediumPractice pack25Measure binary-tree heightJavaScript · Binary-tree traversalMediumPractice pack26Collect leaves left to rightJavaScript · Binary-tree traversalMediumPractice pack27Validate a strict search treeJavaScript · Binary search treesMediumPractice pack28Search a binary search treeJavaScript · Binary search treesMediumPractice pack29Validate an array min-heapJavaScript · Heaps and bounded selectionMediumPractice pack30Insert into a min-heapJavaScript · Heaps and bounded selectionMediumPractice pack31Keep the k largest valuesJavaScript · Heaps and bounded selectionMediumPractice pack32Build an undirected adjacency listJavaScript · Graph representationsMediumPractice pack33Count directed incoming edgesJavaScript · Graph representationsMediumPractice pack34Find unweighted shortest distancesJavaScript · BFS, DFS and componentsMediumPractice pack35Traverse depth firstJavaScript · BFS, DFS and componentsMediumPractice pack36Count undirected connected componentsJavaScript · BFS, DFS and componentsMediumPractice pack37Produce a deterministic topological orderJavaScript · Graph constraints and shortest pathsMediumPractice pack38Check graph bipartitenessJavaScript · Graph constraints and shortest pathsMediumPractice pack39Find shortest paths with nonnegative weightsJavaScript · Graph constraints and shortest pathsMediumPractice pack40Select nonoverlapping intervalsJavaScript · Greedy choices and interval boundariesMediumPractice pack41Merge overlapping closed intervalsJavaScript · Greedy choices and interval boundariesMediumPractice pack42Enumerate subsetsJavaScript · Backtracking and output-sensitive costMediumPractice pack43Enumerate permutationsJavaScript · Backtracking and output-sensitive costMediumPractice pack44Enumerate fixed-size combinationsJavaScript · Backtracking and output-sensitive costMediumPractice pack45Count one-or-two-step pathsJavaScript · One-dimensional dynamic programmingMediumPractice pack46Find minimum coin countJavaScript · One-dimensional dynamic programmingMediumPractice pack47Maximize a nonadjacent sumJavaScript · One-dimensional dynamic programmingMediumPractice pack48Count right-and-down grid pathsJavaScript · Two-dimensional dynamic programmingMediumPractice pack49Measure a longest common subsequenceJavaScript · Two-dimensional dynamic programmingMediumPractice pack50Compute unit-cost edit distanceJavaScript · Two-dimensional dynamic programmingMediumPractice pack
Progress is for your own learning. Browser test results are not a verified assessment.