class Solution {
public int[] searchRange(int[] nums, int target) {
if(nums == null){
return new int[]{-1,-1};
}
int first = find(true,nums,target);
int last = find(false,nums,target);
return new int[]{first,last};
}
public int find(boolean bool,int[] nums,int target){
int begin = 0 ;
int end = nums.length-1;
while(begin<=end){
int mid = begin+(end-begin)/2;
if(nums[mid] > target){
end = mid-1;
}else if(nums[mid] < target){
begin = mid+1;
}else{
if(bool){
if(mid>0 && nums[mid] == nums[mid-1]){
end = mid-1;
}else{
return mid;
}
}else{
if(mid <nums.length-1 && nums[mid] == nums[mid+1]){
begin = mid+1;
}else{
return mid;
}
}
}
}
return -1;
}
}
最初、私は時間の最初の要素を見つけた時、私はとても複雑で高に費やす時間がない、戻ったり前進してきました。