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

难度:medium

题目:假设一个按升序排序的数组在某个未知的轴上旋转。假定数组中没有重复元素。

思路:分情况二叉搜索

153. Find Minimum in Rotated Sorted Array

Runtime: 0 ms, faster than 100.00% of Java online submissions for Find Minimum in Rotated Sorted Array.

Memory Usage: 37.6 MB, less than 100.00% of Java online submissions for Find Minimum in Rotated Sorted Array.

class Solution {
    public int findMin(int[] nums) {
        return findMin(nums, 0, nums.length - 1);
    }
    
    public int findMin(int[] nums, int left, int right) {
        int mid = left + (right - left) / 2;
        // 升序
        if (nums[left] <= nums[mid] && nums[mid] <= nums[right]) {
            return nums[left];
        }
        // 降序
        if (nums[left] >= nums[mid] && nums[mid] >= nums[right]) {
            return nums[right];
        }
        // 升序占大降序占小
        if (nums[left] >= nums[mid]) {
            return findMin(nums, left, mid);
        } 
        // 升序占小降序占大
        return findMin(nums, mid, right);
    }
}

原文 

https://segmentfault.com/a/1190000018154065

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 153. Find Minimum in Rotated Sorted Array

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址