zoukankan      html  css  js  c++  java
  • 153. Find Minimum in Rotated Sorted Array

    Suppose an array sorted in ascending order 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.

    Example 1:

    Input: [3,4,5,1,2] 
    Output: 1
    

    Example 2:

    Input: [4,5,6,7,0,1,2]
    Output: 0

    Approach #1:

    class Solution {
    public:
        int findMin(vector<int>& nums) {
            int len = nums.size();
            if (len == 1) return nums[0];
            int l = 0, r = len-1;
            while (l < r) {
                int m = (l + r) / 2;
                if (nums[m] < nums[r]) {
                    if (nums[m] > nums[l])
                        r = m - 1;
                    else 
                        l = m + 1;
                } else if (nums[m] > nums[l]) {
                    if (nums[m] < nums[r])
                        r = m - 1;
                    else 
                        l = m + 1;
                } else {
                    l++;
                }
            }
            while (1) {
                if (r > 0 && nums[r] > nums[r-1]) r--;
                else return nums[r];
            }
        }
    };
    
    Runtime: 4 ms, faster than 47.61% of C++ online submissions for Find Minimum in Rotated Sorted Array.
    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    中国剩余定理(crt)和扩展中国剩余定理(excrt)
    数论集合
    gcd(欧几里得算法)与exgcd(扩展欧几里得算法)
    青蛙的约会
    【杭电多校第七场】A + B = C
    【XDOJ】小W的塔防
    备战省赛组队训练赛第十四场(UPC)
    2019.4.27浙江省赛
    备战省赛组队训练赛第六场(UPC)
    备战省赛组队训练赛第七场(UPC)
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9889886.html
Copyright © 2011-2022 走看看