题目地址
class Solution {
public int findMin(int[] nums)
{
int res = Integer.MAX_VALUE;
int l = 0;
int r = nums.length - 1;
while (l < r)
{
int mid = l + r >> 1;
if (nums[mid] < res)
res = nums[mid];
//中值 < 右值,说明最小值不可能出现在中值的右边(右边界收缩)
if (nums[mid] < nums[r])
{
r = mid;
}
//中值 >= 右值
//说明右边比左值还要小,最小值只可能出现在中值的右边
else
{
l = mid + 1;
}
}
return nums[l];
}
}
参考题解