分而治之(Divide and conquer), 简写D&C。
D&C是一种解决问题的思路, 并非可用于解决问题的算法。
D&C 的工作原理:
(1) 找出简单的基线条件;
(2) 确定如何缩小问题的规模,使其符合基线条件。

代表:

  • 快速排序

面试题 08.03. 魔术索引

📢 是递增,因为有重复, 二分法不可用

  1. var findMagicIndex = function(nums) {
  2. return helper(nums, 0, nums.length - 1);
  3. };
  4. function helper(nums, left, right) {
  5. if (left > right) return -1;
  6. let mid = Math.floor((left + right) / 2);
  7. let leftIndex = helper(nums, left, mid - 1);
  8. if (leftIndex != -1) return leftIndex;
  9. if (nums[mid] == mid) return mid;
  10. return helper(nums, mid + 1, right);
  11. }