Skip to main content
Binary Search 二分搜索

Binary Search 二分搜索

二分搜索的关键在于:

  1. 搜索 [0, len-1] 这个闭区间,还是 [0, len) 这个开区间.
  2. 如果是闭区间,则循环条件使用 while(left <= right);如果是开区间,则使用while(left < right)。很好理解,考虑列表只有一个因素的情况,闭区间是[1,1]需要等于搜索。
  3. 思考返回的问题:
    • 如果元素是不重复的,可以直接if(nums[mid] == target) return mid;判断返回。
    • 如果元素是重复的,需要考虑返回第一个重复元素还是最后一个重复元素的问题。
      • 返回第一个:if (nums[mid] == target) right = mid - 1; 锁定左侧边界,返回值为:return nums[left] == target ? left : -1;
      • 返回最后一个:if (nums[mid] == target) left = mid + 1; 锁定右侧边界,返回值为:nums[right] == target ? right : -1;

Yujie LiuAbout 2 minComputer ScienceAlgorithmsLeetcodeBinary Search