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 left=0; int right=num.size()-1; while(left<right) { if(num[left]<num[right]) { return num[left]; } int mid=(left+right)/2; if(num[mid]==num[right]) { if(num[left]==num[mid]) { left++; right--; } else if(num[left]<num[mid])return num[left]; else left++; } else if(num[mid]>num[right]) { left=mid; } else { right=mid; } if(left+1==right)return num[left]<num[right]?num[left]:num[right]; } return num[left]; } };