在排序数组中查找元素的第一个和最后一个位置
class Solution {
public int[] searchRange(int[] nums, int target) {
int length =nums.length;
if(length == 0){
return new int [] {-1,-1};
}
int first = firstPosition(nums,target);
if(first == -1){
return new int []{-1,-1};
}
int last = lastPosition(nums,target);
return new int [] {first,last};
}
private int firstPosition(int [] nums,int target){
int left =0;
int right =nums.length-1;
int mid =(left+right)/2;
while(left<right){
if(nums[mid]<target){
left=mid+1;
}else if(nums[mid]==target){
right=mid;
}else if(nums[mid]>target){
right=mid-1;
}
}
if(nums[left]==target){
return left;
}
return -1;
}
private int lastPosition(int [] nums,int target){
int left =0;
int right =nums.length-1;
int mid =(left+right+1)/2;
while(left<right){
if(nums[mid]<target){
left=mid+1;
}else if(nums[mid]==target){
left=mid+1;
}else if(nums[mid]>target){
right=mid-1;
}
}
if(nums[left]==target){
return left;
}
return -1;
}
}