题目描述:
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
方法效率:
//二分查找法
class Solution {
public int[] searchRange(int[] nums, int target) {
int len=nums.length;
int l=0,r=len-1,mid=0;
int flag=0;
int[] arr=new int[2];
arr[0]=-1;
arr[1]=-1;
while(l<=r){
mid=(l+r)/2;
if(nums[mid]==target){
flag=mid;
while(mid>=l&&nums[mid]==target){
mid--;
}
arr[0]=mid+1;
mid=flag;
while(mid<=r&&nums[mid]==target){
mid++;
}
arr[1]=mid-1;
break;
}else if(nums[mid]>target){
r=mid-1;
}else{
l=mid+1;
}
}
return arr;
}
}