[leetcode]Find Minimum in Rotated Sorted Array II

来源:互联网 发布:java扑克牌发牌程序 编辑:程序博客网 时间:2024/06/05 01:07

From : https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/

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>& nums) {        int start=0, end=nums.size()-1;        while(start <= end) {            int mid = (start+end)>>1;            if(nums[mid] == nums[start] && nums[mid] == nums[end]) {                return findMin(nums, start, end);            } else if(nums[mid] >= nums[start] && nums[start] >= nums[end]) {                start = mid+1;            } else {                end = mid;            }        }        return 0;    }        int findMin(vector<int>& nums, int start, int end) {        int res = nums[start];        for(int i=start+1; i<=end; ++i) {            if(nums[i] < res) {                return nums[i];            } else if(nums[i] > res) {                while(i < end) {                    if(nums[i] > nums[i+1]) {                        return nums[i+1];                    }                    ++i;                }            }        }        return res;    }};


0 0
原创粉丝点击