class Solution {
//因为最小值和最大值总是相邻的(除了初始状态)
//1.用二分查找,如果右侧是有序则最小值在左侧
//2.如果右侧无序则最小值在右侧
//如果mid正好是最小值,那么右侧自然是有序的,
//为了将mid加入到搜索的一侧,所以1中right应该移动到mid而不是mid-1
//因为初始状态最小值在左侧,所以先判断右侧包括这个情况
public int findMin(int[] nums) {
int left = 0, right = nums.length - 1;
while(left < right){
int mid = (right + left) / 2;
//右侧有序
if(nums[mid] < nums[right]){
right = mid;
}
//左侧有序
else{
left = mid + 1;
}
}
return nums[left];
}
}