因为是有序的,先往二分法方向思路一下,比对mid和左右两边的关系。具体画个图就明白了,如果有重复元素,无外乎就是左边left和右边righj相等,此时把右指针左移一个对结果没有任何影响。getget。
class Solution {
public int findMin(int[] nums) {
int left = 0;
int right = nums.length -1;
while(left < right){
int mid = left + (right-left)/2;
if(nums[mid] > nums[right]){
left = mid + 1 ;
}else if(nums[mid] < nums[right]){
right = mid;
}else{
right--;
}
}
return nums[right];
}
}