又是二分查找

var searchRange = function (nums, target) {
      var left = 0, right = nums.length - 1;
      while (left <= right) {
        var mid = left + ((right - left) >> 1);
        if (nums[mid] == target) { //开始三个分支的处理
          var begin = mid
          while (nums[begin - 1] == target) {
            --begin
          }
          var end = mid
          while (nums[end + 1] == target) {
            ++end
          }
          return [begin, end]
          break
        } else if (nums[mid] < target) {//[1,2,3,4,5,6,7], mid = 4, target = 5
          left = mid + 1//left只能往mid靠
        } else {
          right = mid - 1//right只能往mid靠
        }
      }
      return [-1, -1]
    };

相关文章:

  • 2022-12-23
  • 2021-06-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-04
  • 2022-12-23
  • 2021-07-31
相关资源
相似解决方案