154 Find Minimum in Rotated Sorted Array II

Posted lina2014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了154 Find Minimum in Rotated Sorted Array II相关的知识,希望对你有一定的参考价值。

这是问题 “在旋转排序阵列中查找最小值” 的进阶版:
如果允许重复,该怎么办?
这会影响时间复杂度吗?会如何影响和为什么?
假设一个按照升序排列的有序数组从某未知的位置旋转。
(比如 0 1 2 4 5 6 7 可能变成是 4 5 6 7 0 1 2)。
找到其中最小的元素。
数组中可能存在重复的元素。
详见:https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/description/

class Solution {
public:
    int findMin(vector<int>& nums) {
        int size=nums.size();
        if(size==0||nums.empty())
        {
            return 0;
        }
        int low=0;
        int high=size-1;
        int mid=low;
        while(nums[low]>=nums[high])
        {
            if(high-low==1)
            {
                mid=high;
                break;
            }
            mid=(low+high)/2;
            if(nums[low]==nums[mid]&&nums[mid]==nums[high])
            {
                int min=nums[low];
                for(int i=low+1;i<=high;++i)
                {
                    if(min>nums[i])
                    {
                        min=nums[i];
                    }
                }
                return min;
            }
            if(nums[mid]>=nums[low])
            {
                low=mid;
            }
            else if(nums[mid]<=nums[high])
            {
                high=mid;
            }
        }
        return nums[mid];
    }
};

 

以上是关于154 Find Minimum in Rotated Sorted Array II的主要内容,如果未能解决你的问题,请参考以下文章

154. Find Minimum in Rotated Sorted Array II

#Leetcode# 154. Find Minimum in Rotated Sorted Array II

154. Find Minimum in Rotated Sorted Array II

154. Find Minimum in Rotated Sorted Array II(Binary search)

154. Find Minimum in Rotated Sorted Array II

154 Find Minimum in Rotated Sorted Array II