class Solution {
public:
int minNumberInRotateArray(vector rotateArray) {
if (rotateArray.size() == 0)
throw “the vector is empty”;
int head = 0;
int tail = rotateArray.size() - 1;
int Mid = head;
while (rotateArray[head] >= rotateArray[tail])
{
if (tail - head == 1)
{
Mid = tail;
break;
}
Mid = (head + tail) / 2;
if (rotateArray[Mid] == rotateArray[head] && rotateArray[Mid] == rotateArray[tail])
{
//Mid = order(rotateArray, head, tail);
return order(rotateArray, head, tail);
}
if (rotateArray[Mid] >= rotateArray[head])
head = Mid;
else if (rotateArray[Mid] <= rotateArray[tail])
tail = Mid;
}
return rotateArray[Mid];
}
int order(vector rotateArray, int head,int tail)
{
int min = rotateArray[head];
for (int i =head+1; i < tail+1; ++i)
{
if (rotateArray[i] < min)
{
min = rotateArray[i];
}
}
return min;
}
};