返回首页

查找边界:第一个与最后一个位置

一、面试常考点

1. 左边界与右边界

左边界在 nums[mid] >= target 时收缩右侧;右边界反之。

2. 常见追问

为什么不能复用同一个判断式直接找两端。

二、细节介绍

1. 左边界

找到第一个 >= target 的位置。

2. 右边界

找到最后一个 <= target 的位置。

三、示例代码

function lowerBound(nums, target) {
  let l = 0
  let r = nums.length
  while (l < r) {
    const mid = l + ((r - l) >> 1)
    if (nums[mid] >= target) r = mid
    else l = mid + 1
  }
  return l
}

四、常用应用场景

1. 区间计数

统计某值出现次数、某区间元素数量。

2. 日志检索

按时间戳快速定位起止区间。