class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if(rotateArray[0]<rotateArray[1]&&rotateArray[0]<rotateArray[rotateArray.size()-1])
return rotateArray[0];
int L=0,R=rotateArray.size()-1;
while(L<R){
int mid=(L+R)/2;
if(mid>0&&rotateArray[mid]<rotateArray[mid-1])
return rotateArray[mid];
else if(rotateArray[mid]>rotateArray[0]){
L=mid+1;
}
else if(rotateArray[mid]==rotateArray[0]){
int ans=1;
while(rotateArray[ans++]>=rotateArray[0]);
if(ans<=mid)
R=mid-1;
else L=mid+1;
}
else R=mid-1;
}
return rotateArray[L];
}
};
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if(rotateArray[0]<rotateArray[1]&&rotateArray[0]<rotateArray[rotateArray.size()-1])
return rotateArray[0];
int L=0,R=rotateArray.size()-1;
while(L<R){
int mid=(L+R)/2;
if(mid>0&&rotateArray[mid]<rotateArray[mid-1])
return rotateArray[mid];
else if(rotateArray[mid]>rotateArray[0]){
L=mid+1;
}
else if(rotateArray[mid]==rotateArray[0]){
int ans=1;
while(rotateArray[ans++]>=rotateArray[0]);
if(ans<=mid)
R=mid-1;
else L=mid+1;
}
else R=mid-1;
}
return rotateArray[L];
}
};