相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
class Solution {
public int[] searchRange(int[] nums, int target) {
int left = 0;
int right = nums.length-1;
int[] res = new int[]{-1,-1};
if(nums.length==0){
return res;
}
while(left <right){ // 找目标值第一次出现的位置
int mid =(left +right)/2;
if(nums[mid] >=target){//这里是找到第一个出现目标值的位置
right =mid;
}else{
left = mid+1;
}
}
if(nums[left] != target){//当第一个位置不是目标值,说明没有目标值
return res;
}else{//第一个位置是目标值,存进数组
res[0]= left;
left = 0;
right = nums.length-1;
while(left < right){
int mid = (left+right+1)/2;//如果不+1,会无限循环,时间超时
if(nums[mid]<= target){//这里是找到最后一个目标值的位置
left = mid;
}else{
right=mid-1;
}
}
}
res[1] =left; //存最后一个出现目标值的位置
return res;
}
}