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.
class Solution {
public:
int findMin(vector<int> &num) {
int r = num.size();
if (r == 1) {
return num[0];
}
r--;
int l = 0;
while (l < r) {
int mid = l + (r-l)/2;
if (num[mid] > num[r]) {
l = mid + 1;
} else if (num[mid] < num[r]) {
r = mid;
} else {
r--;
}
}
return num[l];
}
};