二分查找这里做的题还有点少,以后再补详细的说明把,这里只是把标答照着抄了一遍。
class Solution {
public int[] searchRange(int[] nums, int target) {
//查找第一个小于target的元素
if(nums.length==0)
{
int[] a = {-1,-1};
return a;
}
int s = 0;
int e = nums.length-1;
int mid;
int res = -1;
while(s<=e)
{
mid = (s+e)/2;
if(nums[mid]<target)
s = mid+1;
if(nums[mid]>target)
e = mid-1;
if(nums[mid]==target)
{
res = mid;
e = mid-1;
}
}
int start = res;
res = -1;
s = 0;
e = nums.length-1;
while(s<=e)
{
mid = (s+e)/2;
if(nums[mid]<target)
s = mid+1;
if(nums[mid]>target)
e = mid-1;
if(nums[mid]==target)
{
res = mid;
s = mid+1;
}
}
int end = res;
int[] a = {start,end};
return a;
}
}