首页 > 其他分享 >[LeetCode Hot 100] LeetCode153. 寻找旋转排序数组中的最小值

[LeetCode Hot 100] LeetCode153. 寻找旋转排序数组中的最小值

时间:2023-12-20 13:00:41浏览次数:34  
标签:right LeetCode153 nums int mid Hot 数组 100 left

题目描述

思路

  • 如果数组翻转后又回到升序的情况,即nums[left] <= nums[right],则nums[left]就是最小值,直接返回。
  • 如果数组翻转,需要找到数组中第二部分的第一个元素:

  • 若 nums[left] <= nums[mid],说明区间 [left,mid] 连续递增,则最小元素一定不在这个区间里,可以直接排除,最小值在[mid + 1,right]这个区间。因此,令left = mid+1,在 [mid+1,right] 继续查找

  • 否则,即nums[left] > nums[mid],说明区间[mid, right]连续递增,则最小元素一定在[left, mid]这个区间,因此令right = mid,在[left,mid]继续查找。注意:right更新为mid而不是mid-1,因为mid无法被排除。

方法一:

class Solution {
    public int findMin(int[] nums) {
        if (nums == null || nums.length == 0) throw new RuntimeException("Empty Array");
        int left = 0, right = nums.length - 1;
        while (left <= right) { // 实际上是不会跳出循环,当 left==right 时直接返回
            // 升序的情况,翻转一圈后回到原样
            if (nums[left] <= nums[right]) return nums[left];
            int mid = left + (right - left) / 2;
            if (nums[left] <= nums[mid]) { // [left, mid]有序
                left = mid + 1;
            } else { // [mid, right] 有序
                right = mid;
            }
        }
        return -1;
    }
}

标签:right,LeetCode153,nums,int,mid,Hot,数组,100,left
From: https://www.cnblogs.com/keyongkang/p/17916279.html

相关文章

  • 初中英语优秀范文100篇-032My Favourite Season-我最喜欢的季节
    PDF格式公众号回复关键字:SHCZFW032记忆树1Autumnismyfavouriteseason.翻译秋天是我最喜欢的季节。简化记忆秋天句子结构"Autumn"是主语,表示秋天这个季节。"is"是系动词,连接主语和表语。"myfavouriteseason"是表语,表示秋天使我最喜欢的季节。其中,"my"是形容......
  • 100道React高频题整理(附答案背诵版)
    1、简述React有什么特点?React是一个用于构建用户界面的JavaScript库,由Facebook开发并维护。React有以下几个主要特点:声明式设计:React采用声明式设计,让代码更易于理解,且方便调试。你只需描述出你希望程序的最终状态,React会自动确保用户界面与你描述的状态保持一致。组件化:......
  • [LeetCode Hot 100] LeetCode33. 搜索旋转排序数组
    题目描述思路如果nums[left]<=nums[mid],则[left,mid]有序如果nums[left]>nums[mid],则[mid,right]有序方法一:classSolution{publicintsearch(int[]nums,inttarget){if(nums==null||nums.length==0)return-1;intleft=0,ri......
  • [LeetCode Hot 100] LeetCode35. 搜索插入位置
    题目描述思路基础二分搜索模板本质:找到第一个大于等于target的元素的下标注意:该题目不存在重复元素存在一种特殊情况:target>nums的最大值,此时插入的位置正好是left的位置方法一:classSolution{publicintsearchInsert(int[]nums,inttarget){if......
  • [LeetCode Hot 100] LeetCode34.在排序数组中查找元素的第一个和最后一个位置
    题目描述思路:二分查找之寻找左右侧边界两个关键点:1.数组有序;2.时间复杂度O(logn)方法一:classSolution{publicint[]searchRange(int[]nums,inttarget){if(nums.length==0||nums==null){returnnewint[]{-1,-1};}......
  • 记录--一行代码修复100vh bug
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助你知道奇怪的移动视口错误(也称为100vhbug)吗?或者如何以正确的方式创建全屏块?一、100vhbug什么是移动视口错误?你是否曾经在网页上创建过全屏元素?只需添加一行CSS并不难:.my-page{height:100vh}1v......
  • 【2023潇湘夜雨】WIN11_Pro_Canary_26016.1000软件选装纯净版12.19
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_Canary_26016.1000。2.增加部分优化方案,手工精简部分较多,干掉右下角水印。3.OS版本号为26016.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.1......
  • C0328 【1005 C组】模拟测试 斜率 题解
    原题链接:斜率。题意在一个平面直角坐标系中,给定\(n\)个点的横纵坐标,求出哪两个点所构成的连线的斜率最接近\(\frac{P}{Q}\)。数据范围:\(n\le1000000\)。思路显然这是一道数学题,不能直接暴力去找答案。首先我们可以弱化一下题目,求出斜率最接近\(y=0\)即\(x\)轴的两......
  • 同样的程序,有时是gpu正常10%,有时gpu占用率到达或接近100%?提供一个解决方案
    同样的程序,同样的代码,只在不同时间运行,有时是gpu正常10%,有时gpu占用率到达或接近100%?这里提供一个排错的解决方案1、首先打开任务管理器,看看cpu的连续正常运行时间,如果超过了1天,请重启或按shift后关闭电脑再开机,这个方法可以把重复运行的程序的一些积累效应去掉我通过这个方式......
  • 一行代码修复100vh bug | 京东云技术团队
    你知道奇怪的移动视口错误(也称为100vhbug)吗?或者如何以正确的方式创建全屏块?一、100vhbug什么是移动视口错误?你是否曾经在网页上创建过全屏元素?只需添加一行CSS并不难:.my-page{height:100vh}1vh是视口高度的1%,正是我们所需要的。但当我们在移动设备上测试时,就......