暴力解
先判断数组只有一个数的情况,看看是否是目标数,如果是就是返回[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;
}
通过情况
好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!
注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受