154. Find Minimum in Rotated Sorted Array II[hard]

来源:互联网 发布:77pepecom现在域名 编辑:程序博客网 时间:2024/06/05 01:09

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.


问旋转后的有序数列要多大的复杂度才能找到最小的数。

假设没有重复值的情况下,可以用简单二分解决,复杂度为log(2,n)

值有重复的情况下复杂度在 log(2,n) ~ n 之间

极端情况:n-1或n个数都相同时退化成O(n)的算法


class Solution {public:    int findMin(vector<int>& nums){        int l = 0 , r = nums.size() - 1 , mid ;        while( l < r )        {        mid = ( l + r )>>1;        if(nums[mid] > nums[r])        l = mid+1;        else if(nums[mid] < nums[r])        r = mid;        else        r--;        }        return nums[l];    }};


0 0
原创粉丝点击