题目
解题思路
和153题的区别在于可能存在重复的元素
当nums[pivot]==nums[high]。由于重复元素的存在,并不能确定 nums[pivot] 究竟在最小值的左侧还是右侧,因此不能莽撞地忽略某一部分的元素。唯一可以知道的是,由于它们的值相同,所以无论 nums[high] 是不是最小值,都有一个它的「替代品」nums[pivot],因此可以忽略二分查找区间的右端点。

代码
class Solution {public int findMin(int[] nums) {int low = 0;int high = nums.length - 1;while (low < high) {int pivot = low + (high - low) / 2;if (nums[pivot] < nums[high]) {high = pivot;} else if (nums[pivot] > nums[high]) {low = pivot + 1;} else {high -= 1;}}return nums[low];}}
