zoukankan      html  css  js  c++  java
  • leetcode[154]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> &num) {
            int left=0;
            int right=num.size()-1;
            while(left<right)
            {
                if(num[left]<num[right])
                {
                    return num[left];
                }
                int mid=(left+right)/2;
                if(num[mid]==num[right])
                {
                    if(num[left]==num[mid])
                    {
                        left++;
                        right--;
                    }
                    else if(num[left]<num[mid])return num[left];
                    else left++;
                }
                else if(num[mid]>num[right])
                {
                    left=mid;
                }
                else
                {
                    right=mid;
                }
                if(left+1==right)return num[left]<num[right]?num[left]:num[right];
            }
            return num[left];        
        }
    };
  • 相关阅读:
    APIO2018 题解
    【THUWC2017】在美妙的数学王国中畅游(bzoj5020)
    【bzoj3270】博物馆
    【库存】NOI笔试习题集
    装饰器
    异常
    类的详解
    函数
    流程控制
    运算符
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4280720.html
Copyright © 2011-2022 走看看