
暴力解
先判断数组只有一个数的情况,看看是否是目标数,如果是就是返回[0,0]不是就返回[-1,-1]
然后判断数组中多余一个数的情况,先二分查找,看看数组中是否有目标数,如果有,再去找目标数的边界问题,如果没有则返回[-1,-1]
以下是全部代码部分
public static int[] searchRange(int[] nums, int target) {
int left = 0;
int right = nums.length-1;
if(nums.length==1){
if(nums[0]==target){
int [] re= new int [] {0,0};
return re;
}else{
int [] re= new int [] {-1,-1};
return re;
}
}
while(left<=right){
int mid = (left+right)/2;
if(nums[mid] == target){
return sort(mid,nums,target);
}else if(target>nums[mid]){
left = mid+1;
}else{
right = mid-1;
}
}
int [] re= new int [] {-1,-1};
return re;
}
public static int [] sort(int mid, int[] nums, int target){
int left = 0;
int right = 0;
for(int i=mid ;i<=nums.length-1;i++){
if(nums[i] == target){
right = i ;
}else{
break;
}
}
for(int i=mid ;i>=0;i--){
if(nums[i] == target){
left = i ;
}else{
break;
}
}
int [] re= new int [] {left,right};
return re;
}
通过情况

好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!
注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受
本文介绍了如何使用二分查找算法在整数数组中找到目标数的边界。首先处理数组只有一个元素的情况,然后进行二分查找。当找到目标数时,再分别从两侧遍历确定边界。最后,如果找不到目标数,则返回[-1,-1]。完整代码展示了这个过程。


被折叠的 条评论
为什么被折叠?



