follow to "Find Minimum in rotated Sorted Array":
What if duplicates is allowed?
Would this affect the run-time complexity? How and why?
Suppose a sorted array is rotated on 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 find (vector<int> num, int begin, int end) {int res = num[begin];for (int i = begin+1; I < ; = end; i++) if (res > num[i]) res = Num[i];return Res;} int BinarySearch (vector<int> num, int begin, int end) {if (begin = end) return num[begin];if (Num[begin] < Num[end] Return Num[begin];else if (num[begin] = = Num[end]) return find (num, begin, end), else{int mid = begin + (End-begin)/2;if (Num[begin] < Num[mid]) return BinarySearch (num, mid+1, end), else if (Num[begin] > Num[mid]) return BinarySearch (num , begin, mid); Elsereturn find (Num, mid, End);}} int findmin (vector<int> &num) {return binarysearch (num, 0, Num.size ()-1);}};
int find (vector<int> num, int begin, int end) {int res = num[begin];for (int i = begin+1; I <= end; i++) if (res > Num[i]) res = Num[i];return Res;} int findmin (vector<int> &num) {int begin = 0, end = Num.size () -1;if (Num[begin] < Num[end]) return num[begin]; while (begin <= end) {if (begin = = end) return num[begin];if (Num[begin] < Num[end]) return Num[begin];else if (num[ begin] = = Num[end]) return find (num, begin, end); Else{int mid = begin + (end-begin)/2;if (Num[begin] < Num[mid]) begin = Mid + 1;else if (Num[begin] > Num[mid]) end = Mid;else return find (num, mid, End);}}}
Leetcode:find Minimum in rotated Sorted Array II