class Solution {
public:
vector<int> searchRange(int A[], int n, int target) {
vector<int> ivec;
if(n==0){
ivec.push_back(-1);
ivec.push_back(-1);
return ivec;
}
int left=0;
int right=n-1;
while(left<=right){
int mid=left+(right-left)/2;
if(A[mid]==target){
int index=mid;
while(index>=0&&A[index]==target){ //可能存在越界的可能呢
index--;
}
ivec.push_back(++index);
while(mid<=(n-1)&&A[mid]==target){
mid++;
}
ivec.push_back(--mid);
return ivec;
break;
}else if(A[mid]<target){
left=mid+1;
}else{
right=mid-1;
}
}
ivec.push_back(-1);
ivec.push_back(-1);
return ivec;
}
int findfirst(int A[],int n,int target){
int left=0;
int right=n-1;
int res=-1;
while(left<=right){
int mid=left+(right-left)/2;
if(target==A[mid]){
res=mid;
right=mid-1;
}else if(target<A[mid]){
right=mid-1;
}else{
left=mid+1;
}
}
return res;
}
int findlast(int A[],int n,int target){
int left=0;
int right=n-1;
int res=-1;
while(left<=right){
int mid=left+(right-left)/2;
if(target==A[mid]){
res=mid;
right=mid+1;
}else if(target<A[mid]){
right=mid-1;
}else{
left=mid+1;
}
}
return res;
}
};