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)
  • 相关阅读:
    Redis:五、Redis持久化
    Redis:四、jedis连接redis服务器
    Redis:三、Key和Value
    php 拆分的 string里包含“2”或“1”符号(“”或者“”)
    清除float浮动
    js 判断数据类型
    form表单里target属性(在新窗口打开页面)
    think PHP5实现文件下载
    echarts自定义提示框内容
    Chrome浏览器不支持小于12px的字体大小
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9889886.html
Copyright © 2011-2022 走看看