二分查找实例3(寻找旋转排序数组中的最小值)

news2025/1/12 7:00:45

题目:

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:

  • 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
  • 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]

注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。

给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

示例 1:

输入:nums = [3,4,5,1,2]
输出:1
解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。

示例 2:

输入:nums = [4,5,6,7,0,1,2]
输出:0
解释:原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。

示例 3:

输入:nums = [11,13,15,17]
输出:11
解释:原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。

提示:

  • n == nums.length
  • 1 <= n <= 5000
  • -5000 <= nums[i] <= 5000
  • nums 中的所有整数 互不相同
  • nums 原来是一个升序排序的数组,并进行了 1 至 n 次旋转

算法原理:

通过对题目的了解,我们可以得到如下图示:

AB区间里的任意一个元素都大于D的值,C点的值就是我们要找的结果,当CD区间内不止有1个元素时,C严格小于D,但当CD区间仅有1个元素时,C等于D

二分查找的本质就是:找到⼀个判断标准,使得查找区间能够⼀分为⼆

1 当mid落到AB区间时,即mid位置的值严格大于D点的值,则left=mid+1

2 当mid落到CD区间时,即mid位置的值小于等于D点的值,则right=mid

代码实现:

class Solution 
{
public:
    int findMin(vector<int>& nums) 
    {
        int left = 0;
        int right = nums.size()-1;
        int x = nums[right];//记录最后一个位置的值,即D点
        while(left<right)
        {
            int mid =  left+(right-left)/2;
            if(nums[mid]>x)
            {
                left = mid+1;
            }
            else
            {
                right = mid;
            }
        }
        return nums[left];
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/999061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《论文阅读》常识感知的提示用于可控的同情对话生成 2023 AAAI

《论文阅读》常识感知的提示用于可控的同情对话生成 前言简介基础知识即插即用(Plug and Play)Future Discriminators(FUDGE)动机数据集方法前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中文翻译的解读后感到失望? 小白如何从零读懂论…

C#+sqlserver+asp.net婚纱影楼管理系统

一、源码描述 这是一款简洁十分美观的ASP.NETsqlserver源码&#xff0c;界面十分美观&#xff0c;功能也比较全面&#xff0c;比较适合 作为毕业设计、课程设计、使用&#xff0c;感兴趣的朋友可以下载看看哦 二、功能介绍 该源码功能十分的全面&#xff0c;具体介绍如下&…

企业如何加强合同风险控制?

企业运营的主要流程&#xff0c;不会因为企业人员规模或者业务规模大小的差异&#xff0c;而出现巨大的差异。 千万亿市值的上市公司、不足百人的新兴公司&#xff0c;面对的经营风险本质上不会有明显的区别。 那么&#xff0c;企业经营活动中&#xff0c;有哪些应对合同风险的…

从华为的C端产品服务体系看客户服务如何成为生产力

客户服务重要吗&#xff1f; 我想任何一个企业、企业家乃至员工都不会否认客户服务的重要性&#xff0c;但是实际上要转化为行动&#xff0c;就有难度了。不是所有的企业都能做到让客户服务为自己的品牌加分&#xff0c;甚至让客户服务成为开拓市场的利器。 一说到服务&#…

VA01/VA02/VA03/VA05 销售订单隐藏价格

1、业务需求 针对用户使用销售订单时&#xff0c;判断是否有权限&#xff0c;没有权限时隐藏销售订单抬头和行项目的价格相关字段 2、增强实现 2.1、隐藏抬头和行项目价格 隐藏抬头和行项目表格中的净值和净价字段 在程序MV45AFZZ→USEREXIT_FIELD_MODIFICATION中写隐式增强…

上海亚商投顾:沪指小幅调整 两市成交不足7000亿元

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指9月8日探底回升&#xff0c;午后一度拉升翻红&#xff0c;深成指、创业板指走势稍弱。北斗板块全线爆发&a…

前端实习最终章

有一周没有写实习博客了&#xff0c;有点偷懒了&#xff0c;周三完成了最后一天的实习&#xff0c;与同事和leader进行了告别&#xff0c;然后与在深圳的同学吃了告别饭&#xff0c;正式离开深圳了&#xff0c;希望明年还可以在深圳工作&#xff01; 实习生活告一段落了&#…

SQL中的PowerDesigner逐步深入提问,你能掌握多少?

你提到了有PowerDesigner操作经验&#xff0c;请解释一下PowerDesigner是什么&#xff0c;以及它在数据库设计和开发中的作用是什么&#xff1f; 标准回答&#xff1a; PowerDesigner是一种数据库建模和设计工具&#xff0c;它用于创建数据库模型、设计表结构、定义关系和生成…

界面组件DevExpress WinForms v23.1 - 增强的图表、甘特图功能

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

RFID服装管理系统改善零售供应链

随着时尚零售业的竞争日益激烈&#xff0c;RFID技术正快速地改变着服装管理的方式。我们将探讨RFID服装管理系统的核心优点&#xff0c;以及如何在零售供应链中充分利用它。 首先&#xff0c;让我们了解一下RFID技术是什么。RFID是一种无线通信技术&#xff0c;通过使用RFID标…

酷开系统 | 酷开科技打造“客厅”新体验,带来家庭幸福感

聚焦家庭场景&#xff0c;客厅一直占据着C位&#xff0c;更多时候&#xff0c;人们在客厅里玩耍、追剧、聚会&#xff0c;甚至是工作。立足于客厅场景&#xff0c;从家庭入手&#xff0c;覆盖电视目标受众&#xff0c;不断提升内容服务质量&#xff0c;不仅能够提升整体幸福感和…

第6章 【MySQL】B+树索引

各个数据页可以组成一个 双向链表 &#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个 单向链表 &#xff0c;每个数据页都会为存储在它里边儿的记录生成一个页目录 &#xff0c;在通过主键查找某条记录的时候可以在 页目录 中使用二分法快速定位到对应的槽&…

Platypus:快速、廉价且强大的大模型

一系列经过微调和合并的模型&#xff0c;在 Open LLM 排行榜上名列前茅。他们是如何做到的呢&#xff1f; 近年来&#xff0c;模型参数爆炸到数量巨大&#xff08;PaLM 为 540 B&#xff09;。有人提出的问题是这个参数数量是否必要。 根据 OpenAI 的说法&#xff0c;随着模型…

MQTT 连接优化指南

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Maven部署打包多环境(开发、测试、生产)配置教程

Maven打包多环境&#xff08;开发、测试、生产&#xff09;配置教程 1、多环境配置的必要性1.1 没有进行多环境配置进行的操作复杂性1.2 不影响运行时配置 2、配置方案2.1 添加profile属性2.1 添加两个插件2.3 主配置文件中添加插值变量 3、效果展示3.1 勾选prod环境3.2 控制台…

Archery- SQL审核查询平台告警通知设置

邮箱通知 进入系统管理-》配置项管理 工单通知分类里面 ARCHERY_BASE_URL:平台地址,告警通知的时候可以点此链接跳转,访问审核sql详情页 DDL_NOTIFY_AUTH_GROUP:DDL工单通知权限组名,对应权限组管理页面的名称,为空则不通知,仅DDL工单执行完毕时会进行通知 NOTIFY_P…

基于SSM的助学贷款管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【Redis】.net core Redis事件订阅与发布,基础篇

2023年&#xff0c;第38周。给自己一个目标&#xff0c;然后坚持总会有收货&#xff0c;不信你试试&#xff01; 发布与订阅&#xff08;Publish/Subscribe&#xff0c;也简称为 Pub/Sub&#xff09;是一种消息传递模式&#xff0c;用于解耦发布者和订阅者之间的关系。 目录 一…

离散性行业介绍及与MES系统的好处

离散型行业是指那些生产、制造或提供一种有形产品或明确定义的服务的行业&#xff0c;这些产品或服务通常可以分为离散的单位&#xff0c;而且它们的生产通常遵循一定的工序或流程。与连续型行业不同&#xff0c;离散型行业的生产过程通常是间断的&#xff0c;而不是连续的。 …

【ArcGIS Pro二次开发】(66):三调规程_土地利用现状分类面积汇总表

之前做了一个三调的土地利用现状分类统计表&#xff0c;是按照自己的习惯做的&#xff0c;发现不符合土规专业的要求&#xff0c;于是翻开三调规程&#xff0c;按规范重新制作。 一、要实现的功能 如上图所示&#xff0c;在【规划应用】组—【三调】面板下&#xff0c;点击【1、…