自学内容网 自学内容网

力扣中等 153.寻找旋转排序数组中的最小值

文章目录

题目介绍

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

题解

正解:可以和数组最后一个数比较,来判定二分的位置是在最小值的左侧还是在最小值的右侧。

在0到n-2二分,如果nums[mid] > nums[n - 1],则mid在最小值的左侧,mid和其左侧染成红色;如果nums[mid] < nums[n - 1],则mid要么是最小值要么在最小值的右侧,染成蓝色,所以二分结束后,最左边的蓝色就是答案。
在这里插入图片描述

class Solution {
    public int findMin(int[] nums) {
        int left = 0, right = nums.length - 2; // 闭区间 [0, nums.length - 2]
        while (left <= right) { 
            int mid = left + (right - left) / 2;
            if (nums[mid] < nums[nums.length - 1]) {
                right = mid - 1; 
            } else {
                left = mid + 1;               
            }
        }
        return nums[left];
    }
}
       

原文地址:https://blog.csdn.net/qq_51352130/article/details/142420126

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!