Follow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Solution:
If there are duplicates in the rotated array, we can still use binary search to solve it. But in the worst case, where the elements in the array have the same value, the time complexity is O(n) since we should check each value.
Time complexity: average: O(logn), worst: O(n)
Space complexity: O(1)
<span style="font-size:14px;">public class Solution {
public int findMin(int[] nums) {
int start = 0;
int end = nums.length - 1;
int mid;
while (start + 1 < end) {
mid = start + (end - start) / 2;
if (nums[mid] > nums[end]) {
start = mid;
} else if (nums[mid] < nums[end]) {
end = mid;
} else {
// when nums[mid] == nums[end], end--
end--;
}
}
if (nums[start] <= nums[end]) {
return nums[start];
} else {
return nums[end];
}
}
}</span>