Pattern — Divide and Conquer

Cross-reference

Đây là alias đến Pattern-Recursion-DC focus vào D&C riêng.

Master theorem (rút gọn cho interview)

:

  • với — vd: merge sort
  • — work outside dominates
  • — work inside dominates — vd: Karatsuba

Khi D&C tốt hơn DP / Greedy?

Tình huốngĐề xuất
Subproblems độc lập (không overlap)D&C
Subproblems lồng nhau (overlapping)DP (memoize)
greedy choice propertyGreedy
Cần combine theo range/intervalD&C

Top problems

BàiLCNote
Merge SortClassic D&C + merge — backbone của Counting Inversions
Quick SortD&C + partition; randomize pivot
QuickselectLC #215D&C only 1 side → avg
Counting InversionsLC #493 (variant)Merge sort + count
Reverse PairsLC #493Merge sort + count cặp i < j, nums[i] > 2*nums[j]
Maximum SubarrayLC #53D&C vs Kadane
Pow(x, n)LC #50Fast exponentiation
Closest Pair of Points
Median of 2 Sorted ArraysLC #4D&C trên indices,

Pitfalls

  1. Off-by-one trong mid — chọn convention closed [lo, hi] hoặc half-open [lo, hi) rồi nhất quán.
  2. Merge step thiếu i/j check: phải xử lý phần còn lại của 1 mảng khi mảng kia hết.
  3. Combine không O(N) → tổng phức tạp xấu hơn.

→ Nguồn: 05-Divide-and-Conquer