leetcode:Find Minimum in Rotated Sorted Array II

来源:互联网 发布:客服团队组建方案 知乎 编辑:程序博客网 时间:2024/04/30 00:48

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 n = num.size();        assert(n > 0);        return find(num,0,n-1);            }        int find(vector<int> &num, int begin, int end)    {        int ans = num[begin];                while(begin <= end)        {            int mid = begin + (end-begin)/2;            ans = min(ans, num[mid]);            if(begin == end)                break;            if(num[begin] < num[end])            {                ans = min(ans,num[begin]);                break;            }            if(num[mid] < num[end])                end = mid -1;            else if(num[mid]  > num[begin])                begin = mid +1;            else            {                if(begin < mid)                    ans = min(ans,find(num,begin,mid-1));                if(mid < end)                    ans = min(ans,find(num,mid+1,end));                break;            }        }        return ans;            }};


0 0
原创粉丝点击