Divide-and-Conquer
LeetCode 889: Construct Binary Tree from Preorder and Postorder Traversal
·2 mins
LeetCode
Medium
Array
Hash-Table
Divide-and-Conquer
Tree
Binary-Tree
LeetCode 889 note: keep the current path on a stack; when its top equals the next postorder value that subtree is complete and is popped; new nodes go left first
Merge Sort and Divide-and-Conquer Counting
·7 mins
Algorithm
Merge-Sort
Divide-and-Conquer
Sorting
Counting
Merge sort templates, where to count in inversion-style problems, the linked list version, and common mistakes
LeetCode 23: Merge k Sorted Lists
·4 mins
LeetCode
Hard
Linked-List
Heap
Merge-Sort
Divide-and-Conquer
LeetCode 23 note: a heap that holds only k heads, and divide-and-conquer pairwise merging
LeetCode 493: Reverse Pairs
·4 mins
LeetCode
Hard
Merge-Sort
Divide-and-Conquer
Two-Pointers
Counting
LeetCode 493 note: when the counting condition differs from the sort order, scan first, then merge
LeetCode 2426: Number of Pairs Satisfying Inequality
·3 mins
LeetCode
Hard
Merge-Sort
Divide-and-Conquer
Two-Pointers
Counting
LeetCode 2426 note: simplify the inequality, then decide whether the matches form a prefix or a suffix
LeetCode LCR 170: Count Inversions (Sword Offer 51)
·3 mins
LeetCode
Hard
Merge-Sort
Divide-and-Conquer
Counting
LCR 170 note: count inversions during the merge step
LeetCode 912: Sort an Array
·3 mins
LeetCode
Medium
Sorting
Merge-Sort
Divide-and-Conquer
LeetCode 912 note: hand-written merge sort and the two bugs I hit
LeetCode 315: Count of Smaller Numbers After Self
·4 mins
LeetCode
Hard
Merge-Sort
Divide-and-Conquer
Binary-Indexed-Tree
Counting
LeetCode 315 note: merge sort with indices, plus a BIT solution
LeetCode 327: Count of Range Sum
·3 mins
LeetCode
Hard
Merge-Sort
Divide-and-Conquer
Prefix-Sum
Binary-Indexed-Tree
LeetCode 327 note: prefix sums plus merge sort counting with two pointers bounding a range, and a log of retyping it over a dozen times
LeetCode 395: Longest Substring with At Least K Repeating Characters
·3 mins
LeetCode
Medium
Sliding-Window
Divide-and-Conquer
Hash-Table
String
LeetCode 395 note: “every character at least k times” is not monotonic, so a direct slide fails; divide and conquer splits on characters with fewer than k occurrences, or fixing the number of distinct characters makes the window slidable
LeetCode 1763: Longest Nice Substring
·2 mins
LeetCode
Easy
Sliding-Window
Divide-and-Conquer
Hash-Table
String
Bit-Manipulation
LeetCode 1763 note: a character whose other case never appears cannot be in the answer, so split on it and recurse, preferring the left side on ties
LeetCode 109: Convert Sorted List to Binary Search Tree
·2 mins
LeetCode
Medium
Linked-List
Divide-and-Conquer
Tree
Binary-Search-Tree
LeetCode 109 note: take the middle found with fast and slow pointers as the root and recurse on both halves; the height balances naturally