- 因为这个移动不是根据target的比较进行了, 只是进行了上界和下界的逼近,直到两者相差1,就停止。
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if (rotateArray.size() == 0) {
return 0;
}
int left = 0;
int right = rotateArray.size() - 1;
if (rotateArray[left] < rotateArray[right]) {
return rotateArray[0];
}
while (left <= right) {
int mid = (left + right) / 2;
if (rotateArray[mid] >= rotateArray[0]) {
left = mid;
}
else if (rotateArray[mid] <= rotateArray[rotateArray.size()-1]) {
right = mid;
}
if (left + 1 == right) {
return rotateArray[right];
}
}
return 0;
}
};