• 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)
  • 相关阅读:
    RAID的详细配置
    RAID的基本介绍
    Linux的远程管理
    Linux防火墙iptables的基础
    【oacle入门】表空间类型
    【oracle入门】数据完整性约束
    【oracle入门】数据模型
    【Oracle入门】数据库的二级映像
    【oracle入门】数据库系统结构----三级模式
    【oracle入门】Oracle数据库11g企业版主要优点
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9889886.html
Copyright © 2020-2023  润新知