leetcode_c++: Find Minimum in Rotated Sorted Array II(154)

来源:互联网 发布:淘宝店铺怎么利用营销 编辑:程序博客网 时间:2024/06/10 05:27

题目

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.


算法

O(logn)
最坏O(N):全部都是一样的


class Solution {public:    int findMin(vector<int>& nums) {        int left=0,right=nums.size()-1;        int mid, ans=nums[0];        while(left<=right){            mid=(left+right)/2;            if(nums[left]<nums[right]){                ans=min(ans,nums[left]);                left=mid+1;            }else if(nums[right]>nums[left]){                ans=min(ans,nums[mid]);                right=mid;            }else{                ans=min(ans,nums[left]);                ++left;            }        }        return ans;    }};
0 0