Divide and conquer 通过 (1) 将问题分解为较小的子问题,(2) 递归地求解每个子问题,以及 (3) 合并结果来解决问题。许多高效算法都遵循这个模板。
核心思想
如果子问题是独立的且规模快速缩小,那么总工作量遵循可以用 Master Theorem 分析的递推关系。
例子:通过分治求最大元素
python
():
lo == hi:
arr[lo]
mid = (lo + hi) //
left = max_dc(arr, lo, mid)
right = max_dc(arr, mid + , hi)
(left, right)
max_dc([, , , ], , )
