原题
https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/
思路
二分查找
贴一下官方题解
一定要能看懂下边的三张图
注意:第三张图可能需要仔细推敲一下了!
本题是建立在上一题的基础之上
题解
package cn.codemao.botmao.admin;
/**
* @version 1.0
* @author: zhangkun@codemao.cn
* @description:
* @create: 2021-04-09 16:14
**/
public class Code154 {
public static void main(String[] args) {
int[] nums = {2,2,2,0,1};
System.out.println(findMin(nums));
}
public static int findMin(int[] nums) {
int len = nums.length;
int low = 0;
int high = len-1;
while(low < high){
int mid = low + (high-low)/2;
int cur = nums[mid];
if (cur < nums[high]) {
high = mid;
} else if (cur > nums[high]) {
low = mid+1;
} else {
high--;
}
}
return nums[low];
}
}