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 };
  • 相关阅读:
    linux 内存映射-ioremap和mmap函数
    vue 模板语法-插值的操作(12-22)
    chrome浏览器json插件
    vue初识(1-11)2020-10-27
    后盾人:JS课程第一章(11-18)2020-10-25
    博客园美化
    chrome 设置自动刷新网页
    二叉树的层次遍历
    poj 2905 双向队列(待补充)
    poj 2159 D
  • 原文地址:https://www.cnblogs.com/linyx/p/4035033.html
Copyright © 2011-2022 走看看