153. Find Minimum in Rotated Sorted Array

Posted skillking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了153. Find Minimum in Rotated Sorted Array相关的知识,希望对你有一定的参考价值。

一、题目

  1、审题

  技术分享图片

  2、分析

    一个有序整数数组翻转成两段增序数组后,求出其中的最小的元素。

 

二、解答

  1、思路:

    方法一、

      采用二分法求出最小元素。

    ①、若 nums[start] < nums[end] ,则数组已经有序;返回 nums[start];

    ②、若 nums[start] < nums[ mid ], 则 前半部分已经有序,则 start = mid + 1;

      否则 后半部分已经有序,则 end = mid;

    ③、最终,返回 nums[start];

    public int findMin(int[] nums) {
     
        int len = nums.length;
        if(len == 1)
            return nums[0];
        
        int start = 0, end = len - 1;
        while(start < end) {
            
            // 已经有序
            if(nums[start] <nums[end]) {
                return nums[start];
            }

//            int mid = (start + end) / 2;    // may be overflow
            int mid = start + ((end - start) >> 1);
            // 前半部分有序
            if(nums[start] < nums[mid]) 
                start = mid + 1;
            // 前半部分无须;
            else 
                end = mid;
            
        }
       
        return  nums[start]);
    }
    

 

  方法二、

    直接采用线性方法进行查找;

    public int findMin(int[] nums) {
        
        for (int i = 1; i < nums.length; i++) {
            if(nums[i] < nums[i - 1])
                return nums[i];
        }
        
        return nums[0];
    }

 

以上是关于153. Find Minimum in Rotated Sorted Array的主要内容,如果未能解决你的问题,请参考以下文章

153. Find Minimum in Rotated Sorted Array

#Leetcode# 153. Find Minimum in Rotated Sorted Array

153. Find Minimum in Rotated Sorted Array

153. Find Minimum in Rotated Sorted Array

153 Find Minimum in Rotated Sorted Array

153. Find Minimum in Rotated Sorted Array