zoukankan      html  css  js  c++  java
  • Leetcode | Find Minimum in Rotated Sorted Array I && II

    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.

    二分查找就行了。

     1 class Solution {
     2 public:
     3     int findMin(vector<int> &arr) {
     4         if (arr.empty()) return -1;
     5         int l = 0, h = arr.size() - 1, m, min = INT_MAX;
     6         while (l <= h) {
     7             m = l + (h - l) / 2;
     8             if (arr[m] >= arr[l]) {
     9                 if (min > arr[l]) min = arr[l];
    10                 l = m + 1;
    11             } else {
    12                 if (arr[m] < min) min = arr[m];
    13                 h = m - 1;
    14             }
    15         }
    16         return min;
    17     }
    18 };

    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.

     1 class Solution {
     2 public:
     3     int findMin(vector<int> &arr) {
     4         if (arr.empty()) return -1;
     5         int l = 0, h = arr.size() - 1, m, min = INT_MAX;
     6         while (l <= h) {
     7             m = l + (h - l) / 2;
     8             if (arr[m] > arr[l]) {
     9                 if (min > arr[l]) min = arr[l];
    10                 l = m + 1;
    11             } else if (arr[m] < arr[l]) {
    12                 if (arr[m] < min) min = arr[m];
    13                 h = m - 1;
    14             } else {
    15                 if (arr[m] < min) min = arr[m];
    16                 l++;
    17             }
    18         }
    19         return min;
    20     }
    21 };
  • 相关阅读:
    完全背包笔记
    渗透测试之信息收集常用网站
    结对项目-四则运算"软件"之升级版
    第三次作业:个人项目-小学四则运算“软件”之初版
    分布式版本控制系统Git的安装与使用
    第一次作业:准备
    爬虫综合大作业
    爬取全部校园新闻
    理解爬虫原理
    中文词频统计与词云生成
  • 原文地址:https://www.cnblogs.com/linyx/p/4035033.html
Copyright © 2011-2022 走看看