Follow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?Would this affect the run-time complexity? How and why?
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Find the minimum element.
The array may contain duplicates.
和find minimum in rotated sorted array I 的区别是和high比而不是和最后一个比,因为最后几个都很可能是一样的数字。
Source
public class Solution {
public int findMin(int[] num) {
int low = 0, high = num.length - 1;
while(low <= high){
int mid = low + ((high - low) >> 1);
if(num[mid] > num[high]) //***
low = mid + 1;
else if(num[mid] < num[high])
high = mid;
else high--;
}
return num[low];
}
}
Test
public static void main(String[] args){
int[] num = {1,1,0,1};
int b = new Solution().findMin(num);
System.out.println(b);
}