`

Find Minimum in Rotated Sorted Array

阅读更多
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.

给定一个有序的数组,不过数组通过一个支点进行了旋转,让我们从中找到最下的元素。我们如果直接找时间复杂度为O(n), 因为这是有序数组进行了旋转,我们可以考虑二分查找法,这样时间复杂度为O(logn)。二分查找的关键在于找到一个条件进行判断,然后可以省略掉一半元素。在这这题目中,我们通过中间元素与最右边的元素进行比较,如果中间元素array[m] > array[right],那么说明做部分为有序的,并且最小值肯定在右半部分,这是我们只需要移动左指针,指向m + 1位置,然后对后半部分进行搜索。如果中间元素小于最右边元素,说明最小值在左部分,这是让右指针指向m位置,因为m位置的元素可能为最小值,然后查找左半部分。代码如下:
public class Solution {
    public int findMin(int[] nums) {
        if(nums == null || nums.length == 0) return -1;
        int l = 0; 
        int r = nums.length - 1;
        while(l < r) {
            int m = l + (r - l) / 2;
            if(nums[m] > nums[r]) {
                l = m + 1;
            } else {
                r = m;
            }
        }
        return nums[l];
    }
}
0
0
分享到:
评论

相关推荐

    lrucacheleetcode-Coding-Interview:编程面试

    Find Minimum In Rotated Sorted Array Find Minimum In Rotated Sorted Array II Search In Rotated Sorted Array Search In Rotated Sorted Array II 二分搜索/有序矩阵 Kth Smallest Element In A Sorted Matrix ...

    leetcode分类-interview:面试基础算法

    sorted array 81: search in rotated sorted array ii 153: find minimum in rotated sorted array 162: find peak element 34: find first and last position of element in sorted array 300: longest increasing ...

    算法刷题笔记leetcode/lintcode

    - Find Minimum in Rotated Sorted Array II(在旋转排序数组中寻找最小值II) - Median(中位数) ### 分析与总结 该文档是针对LeetCode和LintCode平台上的算法题目的整理与解答,主要分为两大部分: 1. **...

    leetcode写题闪退-LeetCode:leetcodeOJ

    对于Find Minimum in Rotated Sorted Array II 和 Find Minimum in Rotated Sorted Array这两道题目,我也是醉了。。。代码完全一样的不说,题目还都特别傻逼。 Maximum Product Subarray 动态规划,类似于求最大...

    js-leetcode题解之153-find-minimum-in-rotated-sorted-array.js

    javascript js_leetcode题解之153-find-minimum-in-rotated-sorted-array.js

    python-leetcode题解之153-Find-Minimum-in-Rotated-Sorted-Array.py

    python python_leetcode题解之153_Find_Minimum_in_Rotated_Sorted_Array.py

    js-leetcode题解之154-find-minimum-in-rotated-sorted-array-ii.js

    javascript js_leetcode题解之154-find-minimum-in-rotated-sorted-array-ii.js

    python-leetcode题解之154-Find-Minimum-in-Rotated-Sorted-Array-II.py

    python python_leetcode题解之154_Find_Minimum_in_Rotated_Sorted_Array_II.py

    LeetCode C++全解

    Find Minimum in Rotated Sorted Array viii. Largest Rectangle in Histogram ix. Maximal Rectangle x. Palindrome Number xi. Search a 2D Matrix xii. Search for a Range xiii. Search Insert Position xiv. ...

    扔鸡蛋leetcode-LeetCode-Note-Mary:玛丽的leetcode笔记本

    扔鸡蛋 leetcode LeetCode-Note-Mary Mary's leetcode notebook The order of problems ...in ...Minimum in Rotated Sorted Array(寻找旋转排序数组中的最小值) 2020/12/09 300. Longest Increasing

    常见算法题答案及解析

    50. Find Minimum in Rotated Sorted Array II – With Duplicates:同上题,但在数组中有重复值。 这些知识点涵盖了编程面试中常见题型的解答方法与技巧,包括基础算法和数据结构的运用。掌握这些内容对通过技术...

    python-leetcode面试题解之第153题寻找旋转排序数组中的最小值-题解.zip

    在本题解中,我们将深入探讨Python编程语言在解决LeetCode第153题——"寻找旋转排序数组中的最小值"(Find Minimum in Rotated Sorted Array)时的应用。LeetCode是一系列面向程序员的在线编程挑战平台,对于求职...

    Leetcode book刷题必备

    50. Find Minimum in Rotated Sorted Array II – With Duplicates:与上题类似,但是数组中可能存在重复元素。 以上就是该文件中提及的知识点,都是与编程面试密切相关的经典算法和数据结构题目。通过学习和练习...

    php-leetcode题解之寻找旋转排序数组中的最小值.zip

    在LeetCode中,这个问题通常被称为“寻找旋转排序数组中的最小值”(Find Minimum in Rotated Sorted Array)。解决这个问题,我们可以利用数组的两个关键特性:一部分是升序排列,另一部分是降序排列。由于数组是...

    Leetcode扑克-coding-interviews:编码面试

    Minimum in Rotated Sorted Array 斐波那契数列 509. Fibonacci Number 跳台阶 70. Climbing Stairs 变态跳台阶 矩形覆盖 二进制中1的个数 191. Number of 1 Bits 数值的整数次方 50. Pow(x, n) 调整数组顺序使奇数...

    leetcode官方50题算法详解

    2. **寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)**:这是二分查找的一个变种,需要根据数组的旋转特性来调整查找的策略。 ### 栈和位运算 栈和位运算是算法中处理特定问题时使用的特殊...

    Leetcode题目+解析+思路+答案.pdf

    - **Find Minimum in Rotated Sorted Array**:在一个旋转了的有序数组中找到最小值。 - **Largest Rectangle in Histogram**:在直方图中找到最大的矩形面积。 - **Maximal Rectangle**:在二维矩阵中找到最大的...

    javalruleetcode-leetcode:这是Java写的leetcode

    [Java](./src/Find minimum in Rotated Sorted Array II/Solution.java) 2014/10/20 难的 [Java](./src/在旋转排序数组中查找最小值/Solution.java) 2014/10/15 中等的 [Java](./src/最大乘积子阵列/Solution.java) ...

    LeetCode练习答案

    - **在旋转排序数组中查找最小值(Find Minimum in Rotated Sorted Array)**: 在旋转排序数组中找到最小值。 - **直方图中的最大矩形(Largest Rectangle in Histogram)**: 给定直方图的高度,计算能够组成的矩形的...

Global site tag (gtag.js) - Google Analytics