题解 | #二分查找-旋转数组的最小数字#
旋转数组的最小数字
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]; } };