当前位置: 首页 > news >正文

lc 153 寻找旋转排序数组的最小值

核心:去掉单调的部分剩下的就是不连续点

只比较mid和right的

分为两种情况,最小值在左边和最小值在右边

二分的目的,是将目标最小值套住,通过判断mid与左右的大小关系,通过判断mid与左右的大小关系,将单调递增的那部分去除掉,最后剩下的就是不连续的点。这个点可能在单调部分的最左边,但绝对不能能在右边

nums[mid] < nums[right] 时候说明右边是递增的,最小值在左边,有可能是mid,所以去掉右边,right = mid

nums[mid] > nums[right]时候说明左边是递增的,最小值在右边,不可能是mid,所以去掉左边

left = mid + 1

class Solution {

    public int findMin(int[] nums) {

        int left = 0;

        int right = nums.length - 1;

        //左开右开保证里面始终能套住最小值

        //left == right时,只剩一个数,退出循环

        while(left < right){

            //向下去整,mid更靠近left,所以left <= mid, mid < right

            //所以循环里mid始终小于right,所以nums[mid] 和 nums[right] 永远不会相等

            //

            int mid = left + (right - left) / 2;

            if(nums[mid] > nums[right]){

                left = mid + 1;

            }else{

                right = mid;

            }

        }

        //循环到最后剩两个数,无论他俩谁大谁小

        //最终left 、 right 、mid是相等的,输出谁都行,都保存了最小值

        return nums[left];

    }

}


http://www.mrgr.cn/news/66231.html

相关文章:

  • 如何检索 LINEMOD 数据集的相机内参
  • MySQL数据库之存储过程的创建与应用
  • 深入理解Spring、SpringMVC、SpringBoot和Spring Cloud的区别与用法
  • 学习threejs,使用对象组合
  • 机器学习(一)——基本概念、模型的评估与选择
  • 探索数据结构:数组与链表
  • keep-alive - 2024最新版前端秋招面试短期突击面试题【100道】
  • 【Ant.designpro】上传图片
  • 测试流程是什么?
  • ins账号多开被封?指纹浏览器来解决!
  • 全栈电子硬件工程师是怎样炼成的?
  • 苹果企业签名掉签有哪些原因
  • gitmakegdb
  • 生物医药产业前景如何?怎样开展生物医药产业分析?
  • 经纬恒润车载TSN网络测试仪TestBase-ATT全新上线!
  • 数组和字符串的es6新方法使用和综合案例
  • 数字身份发展趋势前瞻:身份韧性与安全
  • 筋膜枪哪个牌子好?深入探索国产筋膜枪品牌的口碑之选
  • 【Linux】- vim四种模式常见使用技巧
  • 基于Python的就业数据分析系统的设计与实现-计算机毕设 附源码 26787
  • 算法: 链表题目练习
  • VOY女团开启练习生出道“冲浪模式”
  • 黑马官网最新2024前端就业课V8.5笔记---CSS篇(2)
  • 【Java猿猿必备】Hutool工具库开箱即用
  • 数字贸—大势所趋
  • 20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法