【LeetCode热题100】--34.在排序数组中查找元素的第一个和最后一个位置

34.在排序数组中查找元素的第一个和最后一个位置

二分查找中,寻找 leftIdx 即为在数组中寻找第一个大于等于 target 的下标,寻找 rightIdx 即为在数组中寻找第一个大于 target 的下标,然后将下标减一。进行两次查找

java 复制代码
class Solution {
    public int[] searchRange(int[] nums, int target) {
        //寻找左边界
        int leftIndex = search(nums,target);
        if(leftIndex >= nums.length || nums[leftIndex] != target){
            return new int[]{-1,-1};
        }
        //寻找右边界
        int rightIndex = search(nums,target + 1);
        return new int[]{leftIndex, rightIndex - 1};
    }
    private int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        while (left <= right){
            int mid = (right + left) / 2 ;
            if (nums[mid] >= target){
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }

}
相关推荐
cici158742 分钟前
图像匹配算法:灰度相关法、相位相关法与金字塔+相位相关法
算法
佚名ano4 分钟前
支持向量机SVM的简单推导过程
算法·机器学习·支持向量机
云泽8086 分钟前
蓝桥杯算法精讲:倍增思想与离散化深度剖析
算法·职场和发展·蓝桥杯
m0_569881477 分钟前
基于C++的数据库连接池
开发语言·c++·算法
.select.14 分钟前
c++ auto
开发语言·c++·算法
2401_8845632417 分钟前
C++中的访问者模式高级应用
开发语言·c++·算法
智者知已应修善业22 分钟前
【51单片机用两个定时计数器级联实现定时】2023-04-12
c语言·经验分享·笔记·算法·51单片机
君义_noip23 分钟前
信息学奥赛一本通 1613:打印文章
c++·算法·信息学奥赛·csp-s
nglff31 分钟前
蓝桥杯抱佛脚第四天|前缀和,差分对应练习
算法·职场和发展·蓝桥杯
freexyn1 小时前
Matlab入门自学七十四:坐标系转换,直角坐标、极坐标和球坐标的转换
开发语言·算法·matlab