zoukankan      html  css  js  c++  java
  • LeetCode:Find Minimum in Rotated Sorted Array

    标题叙述性说明:

    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.

    You may assume no duplicate exists in the array.


    思路:利用类似二分查找的方法。假设当前数组里第一个元素小于最后一个元素,则说明当前数组里的第一个元素就是要找的最小值。假设不小于,则计算出mid。假设num[mid]>=num[start]。说明最小的元素在数组的后半部分,则令start=mid+1。假设num[mid]<num[start]。最小的元素就在数组的后半部分,则令end=mid。

    再对以新的start和end组成的数组反复上述步骤。直到找到最小值。


    代码:

    int Solution::findMin(Vector<int> &num)
    {
        int start = 0;
        int end = num.size()-1;
    
        while(start < end)
        {
            if(num[start]<num[end])
                return num[start];
            int mid = (start+end)/2;
    
            if(num[mid]>=num[start])
                start = mid + 1;
            else
                end = mid;
        }
        return num[start];
    }
    


    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    List
    美团Leaf分布式ID生成策略
    单点登陆
    ElasticSearch
    Eureka
    Nginx
    UML
    Computer English
    加密
    Excel中把一列数据转换成逗号隔开的一行
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4730893.html
Copyright © 2011-2022 走看看