153. 寻找旋转排序数组中的最小值
二分法
class Solution {
public int findMin(int[] numbers) {
int left = 0, right = numbers.length - 1;
while (left < right) {
int mid = left + (right - left) / 2;
// 这里的作用是判断 left ~ right 之间是否是单调递增的
// 如果中间值比右边大,说明不是单调递增的,所以数组有旋转过,要把 left 移到 mid 右边
if (numbers[mid] > numbers[right])
left = mid + 1;
// 否则说明 left ~ right 是单调递增的
else right = mid;
}
return numbers[left];
}
}