题解 | #二分查找-旋转数组的最小数字#
旋转数组的最小数字
https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
/*分三种情况讨论:
1.mid位置的值大于右边界的值,那最小值一定在mid的右边;
2.mid位置的值等于右边界的值,无法判断,缩减右边界
3.mid位置的值小于右边界的值,那最小值要么是mid位置的值,要么在mid的左边*/
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
int l =0;
int r= rotateArray.size() - 1;
while (l < r) {
int mid = (l + r) / 2;
if(rotateArray[mid] > rotateArray[r]) l = mid + 1;
else if (rotateArray[mid] == rotateArray[r]) r--;
else r=mid;
}
return rotateArray[l];
}
};

