注意要点

  1. 确定搜索的范围和区间,通常称为上边界和下边界(左右边界)
  2. 取中间数判断是否符合条件
  3. 不满足该往哪个半边靠近

  4. leetcode


    一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。

    1. var missingNumber = function(nums) {
    2. let left = 0,
    3. right = nums.length - 1;
    4. //上边界和下边界
    5. while (left <= right) {
    6. let mid = Math.floor((left + right) / 2); //nums[mid]为中间数
    7. if (mid === nums[mid]) {
    8. left = mid + 1;
    9. } else if (mid < nums[mid]) {
    10. right = mid - 1;
    11. }
    12. }
    13. return left;
    14. };