Questions for Learning¶
Table of Contents
Arrays¶
Unordered Explicit Range - Search¶
https://leetcode.com/problems/max-number-of-k-sum-pairs/description/
https://leetcode.com/problems/two-sum-less-than-k/description/
https://leetcode.com/problems/minimum-sum-of-mountain-triplets-i/
https://leetcode.com/problems/minimum-sum-of-mountain-triplets-ii/
https://leetcode.com/problems/number-of-arithmetic-triplets/
Ordered Explicit Range - Binary Search¶
https://leetcode.com/problems/search-insert-position/description/
https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/
https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/
https://leetcode.com/problems/search-in-rotated-sorted-array/
https://leetcode.com/problems/search-in-rotated-sorted-array-ii/
Ordered Implicit Range - Binary Search¶
[Easy] Arranging Coins
[Medium] Koko Eating Bananas
[Medium] Median of Row Wise Sorted Matrix
[Hard] Median of 2 Sorted Arrays
Find Global Optima - Convex/Mountain Structure¶
[Medium] https://leetcode.com/problems/squares-of-a-sorted-array/
[Medium] https://leetcode.com/problems/longest-mountain-in-array/
[Medium] https://leetcode.com/problems/find-in-mountain-array/
[Medium] https://leetcode.com/problems/peak-index-in-a-mountain-array/
https://leetcode.com/problems/beautiful-towers-i/description/
https://leetcode.com/problems/beautiful-towers-ii/description/
https://leetcode.com/problems/minimum-number-of-removals-to-make-mountain-array/description/
Find Local Optima - Unordered¶
[Medium] Find Any Local Maximum
[Medium] Find All Local Maxima
[Medium] Find Any Local Maximum - 2d
Consecutive Values¶
Contiguous Segments of Same Value¶
[Medium] Check if Longest Consecutive 1s is Longer Than Longst Consecutive 0s
[Medium] Maximum Number of Consecutive Ones If We Can Flip 1 Zero
[Medium] Maximum Number of Consecutive Ones If We Can Delete 1 Zero
[Medium] Maximum Number of Consecutive Ones If We Can Flip k Zeros, Variant
[Medium] Minimum Adjacent Swaps to Make All Ones Consecutive
Inversions¶
[Hard] Count Inversions
Order Statistics¶
[Medium] Kth Largest Element in Array
[Hard] Max in Fixed Range
[Hard] Median in Stream
[Hard] K-th Maximum for K-th Query
[Hard] Mean of Last m excluding smallest & largest k of them
MEX (Minimal Excluded Element)¶
[Hard] Find First Missing Positive
[Hard] Find Kth Missing Positive
[Medium] Find All Missing Positives
[Medium] Add First K Missing Positives
[Medium] [MEX without duplicates] Design Streamer with PopSmallest & AddBack
Think of it as if we’re creating an array by calling the streamer.
In absence of an addback feature, we’d just need to keep track of last streamed element.
Streamed numbers form a contiguous region. Addback feature creates holes in that region.
If holes are kept in a sorted container, we can find MEX easily.
Range Missing¶
Missing Ranges¶
Find Optimal Range/Count - Constrainted Order/Span Query¶
[Medium] Find Shortest Chunk to Sort to Make Entire Array Sorted
Note: Cannot be removed. Have to keep in the Cartesian tree. Two pointers to find span of largest inverted range.
[Medium] Find Shortest Chunk Removal to Make Remaining Array Sorted
Note: Can be removed. Cartesian tree building dynamics would change. Two pointers to simulate.
[Medium] Find Longest NonDecreasing Subarray Formed By Merging 2 Unsorted Arrays
[Medium] Find LIS
[Medium] Find Number of LIS
[Medium] Next Greater Element
[Medium] Next Greater Element Streaming
[Medium] Container with Most Water
[Hard] Trapping Rain Water
[Hard] Trapping Rain Water 2d
Find Optimal Range - Max Aggregate Query¶
[Medium] Find Subarray with Max Sum
[Medium] Find Submatrix with Max Sum
[Medium] Find Subarray with Max Product
[Medium] Find Subarray with Max Abs Sum
[Hard] Find Subarray with Max Sum After Removing One Value Everywhere
[Medium] Find Subarray with Max Sum After Squaring One Element
[Hard] Find Subarray with Max Score = MinVal * Len (Largest Rectangle in Histogram)
[Hard] Find Subarray with Max Score = MinVal * Len Covering One Given Point
[Medium] Find Maximal Submatrix With Columns Reordering Allowed
Find Optimal Length Range - Constrained Aggregate Query¶
Find Range Count - Constrained Aggregate Query¶
[Medium] Count Subarrays with Sum = k
[Medium] Count Submatrices with Sum = k
[Medium] Count Subarrays with Product < k
[Medium] Count Subarrays with k | Sum
Find Range Count - Constrained Value Query¶
Find Optimal Length Range - Constrainted Frequency Query¶
[Medium] Longest Subarray with All Distinct
[Hard] [Fixed Vocab] Longest Subarray with Each Repeating >= k times
Note: Cannot be solved directly. Map it to ‘at most m distinct with each repeating >= k times’, vary over all possible m.
[Hard] Longest Equal Subarray After <=k Replacements
Let’s consider a window from the start which contains some character n times (max_freq).
For longest valid window, at most k other characters can be added.
Once such a condition is breached, we can MOVE THE WINDOW BY 1 TO THE RIGHT and keep track of frequencies.
IT’S NOT NECESSARY UPDATE n TO MATCH THE MAX FREQUENCY OF THE CURRENT WINDOW.
The ans would only change if another window is found with some character with > n frequency.
Since the increment happens by 1, the length comparison `r-l+1 - max_freq == k+1: works once a larger frequency is found even though left has moved.
Decreasing count from the left ensures that we won’t be increasing max_freq incorrectly.
[Hard] Longest Equal Subarray After <=k Removals
SAME AS ABOVE, EXCEPT THE ANSWER IS THE MAX FREQUENCY ITSELF.
[Medium] Longest Equal Subarray If We Can Replace Value within K
Find Range Count - Constrainted Frequency Query¶
Given Range - Sum Query¶
[Easy] Immutable - 1D
[Medium] Immutable - 2D
[Medium] Mutable - 1D
[Medium] Mutable - 2D
Given Range - Frequency Query¶
[Medium] Find Majority Element In Entire Array, Variant
[Medium] Value Frequency in Given Range
Given Range - Min/Max/Avg/Median Query¶
QuickSort Partitioning¶
[Medium] Sort Binary Array
[Medium] Dutch National Flag
[Medium] Even Odd Partitioning
[Medium] Odd Even Index Paritioning
[Medium] List Partitioning
[Medium] Partition with External Key
[Medium] Kth Largest Element in Array
Optimal Partitioning¶
Optimal Cost - DP¶
[Medium] Paint House
[Medium] Minimum Path Sum
[Medium] Rod Cutting
Optimal Choice (0-1 Knapsack) - DP¶
[Medium] Bounded
[Medium] Unbounded
[Medium] Maximal Square
Counting - DP¶
[Medium] Unique Paths
[Medium] Unique Paths with Obstacles
[Medium] Number of Ways to Reach a Position After Exactly k Steps
Permutation¶
[Medium] Find Next Permutation
[Medium] Find Max from 1 Swap
[Medium] Check if 1 Swap Can Make Array Equal
Selection¶
Greedy Search¶
Intervals/Activity Selection¶
[Easy] Exists Overlapping Intervals
[Medium] Exists Overlapping Intervals
[Medium] Merge Overlapping Intervals
[Medium] Remove to Make Non Overlapping
[Medium] Count Overlapping Segments
Job Scheduling¶
Combinatorics¶
Paranthesis¶
Palindromes¶
[Medium] Longest Palindromic Subsequence
[Medium] Longest Palindromic Subarray
[Medium] Count Palindromic Subarrays
[Hard] Longest Palindrome Merging Subsequences from 2 Arrays
Graphs¶
Traversal¶
Connectivity¶
Topological Sort¶
LCA¶
Minimum Spanning Tree¶
Shortest Path¶
Bipartite Matching¶
Eulerian Tour¶
Streaming¶
Counts¶
[Easy] Number of Recent Calls
[Easy] Logger Rate Limiter
[Medium] Hit Counter
[Hard] API Rate Limiter
States¶
[Easy] Design Parking System
[Easy] Design Ordered Stream
[Medium] Insert Delete GetRandom in O(1)
[Medium] Design Browser History
[Medium] LRU Cache
[Hard] LFU Cache
[Medium] Design File System
[Hard] In Memory File System
[Medium] File Sharing System
[Medium] Log Storage System
Search¶
[Easy] Two Sum Streaming
[Medium] Add and Search Words
[Hard] Search Autocomplete System Hitcount + Lexicographical
[Hard] Stream of Characters
Misc¶
[Medium] Range Frequency Queries
[Hard] Range Module
[Hard] Design Statistics Tracker