class Solution {
//nums[mid]要么在较大一半
//要么在较小一半
//注意范围缩减至两个和一个的时候的处理就行了
public int findMin(int[] nums) {
//if(nums.length==1)return nums[0];
int lo=0;
int hi=nums.length;
int mid=0;
while(lo<hi){
mid=lo+(hi-lo)/2;
if(nums[mid]>nums[hi-1]){//
//中点在较大半边,向右找
lo=mid+1;
}
else if(nums[mid]<nums[hi-1])
hi=mid+1;
else{//要么只剩两个,mid是靠右的。要么是唯一一个
if(mid-1>=0)
return Math.min(nums[mid-1],nums[mid]) ;
else
return nums[mid];
}
}
return nums[lo];
}
}
相关文章
- 04-01153. 寻找旋转排序数组中的最小值
- 04-01153. 寻找旋转排序数组中的最小值
- 04-01LeetCode刷题实战153:寻找旋转排序数组中的最小值
- 04-01153. 寻找旋转排序数组中的最小值
- 04-01Leetcode|二分查找|153. 寻找旋转排序数组中的最小值
- 04-01LeetCode: 153. 寻找旋转排序数组中的最小值(二分查找)
- 04-01Leetcode_153. 寻找旋转排序数组中的最小值
- 04-01LeetCode——153寻找旋转排序数组中的最小值
- 04-01leetcode-153-寻找旋转排序数组中的最小值
- 04-01LeetCode 153. Find Minimum in Rotated Sorted Array寻找旋转排序数组中的最小值 (C++)