题目
给定一个区间和目标值,找出目标值的起始下标,若无目标值,则返回[-1,-1]
要求时间复杂度是O(lgn)
算法
- 找到比目标值小的最大值,下一步是目标值
- 找到比目标值大的最小值,上一步是目标值
import java.util.*;
public class Solution{
public int[] searchRange(int[] A,int target){
int[] range={-1,-1};
int low=0,upper=A.length,mid;
if(A[upper-1]<target)
return range;
while(low<upper){
mid=(low+upper)/2;
if(A[mid]<target){
low=mid+1;
}else
upper=mid;
}
if(A[low]!=target)
return range;
range[0]=low;
//搜索终点
upper=A.length;
while(low<upper){
mid=(low+upper)/2;
if(A[mid]>target)
upper=mid;
else
low=mid+1;
}
range[1]=upper-1;
return range;
}
}