分而治之(Divide and conquer), 简写D&C。
D&C是一种解决问题的思路, 并非可用于解决问题的算法。
D&C 的工作原理:
(1) 找出简单的基线条件;
(2) 确定如何缩小问题的规模,使其符合基线条件。
代表:
- 快速排序
面试题 08.03. 魔术索引
📢 是递增,因为有重复, 二分法不可用
var findMagicIndex = function(nums) {
return helper(nums, 0, nums.length - 1);
};
function helper(nums, left, right) {
if (left > right) return -1;
let mid = Math.floor((left + right) / 2);
let leftIndex = helper(nums, left, mid - 1);
if (leftIndex != -1) return leftIndex;
if (nums[mid] == mid) return mid;
return helper(nums, mid + 1, right);
}