class Solution {
public int findMin(int[] nums) {
if(nums.length==1) return nums[0];
int left=0,right=nums.length-1;
while(left<right){
int mid=(left+right)/2;
if(nums[mid]<nums[right]){
right=mid;
}else if(nums[mid]>nums[right]){
left=mid+1;
}
}
return nums[left];
}
}
我感觉我最近越来越提不起劲来做题了,哎
其实最后出来的数列大小波折情况分为以下三种,注意,左边的最小值一点是大于右边的最大值,
因为它都是由第一种情况旋转来的
1,2,3,4,5,6
6,7,0,1,2,3,4
2,3,4,5,6,7,0,1
分别对应着这三种,怎么区分这三种就是看mid和right比大小,对于第一种和第三种情况,mid都是小于right
但是要注意一点,如果是3,1,2 mid正好是right 所以right=mid而不是right=mid-1 ,而left=mid+1