每日一题——寻找旋转排序数组中的最小值(I)

news2025/1/16 12:30:23

寻找旋转排序数组中的最小值——I

题目链接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DJE729nA-1691849612603)(C:\Users\HUASHUO\AppData\Roaming\Typora\typora-user-images\image-20230812212433885.png)]


思路

首先我们以数组[1,2,3,4,5,6,7]举个例子,经过旋转后它无非就这两种情况

情况一:旋转过后数组变成两段有序数列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0xFO4EO-1691849612604)(C:\Users\HUASHUO\AppData\Roaming\Typora\typora-user-images\image-20230812214608839.png)]

情况二:旋转过后数组不变,仍然有序

而这两种情况都有一个共性

以数组**最右边的值val**为研究对象,最小值1右边的所有数必定小于val;最小值左边的数必定大于val

我们可以画出如下的折线图来总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Rc8KcUx-1691849612604)(C:\Users\HUASHUO\AppData\Roaming\Typora\typora-user-images\image-20230812220235167.png)]

知道了这些后,我们就可以利用二分法求解了:

  • 我们设左边界为left,右边界为right,左右边界的中间值为mid
  • 由上面的分析可以知道,若nums[mid] > nums[right],就说明最小值一定在中间值的右侧,中间值左侧的区域直接舍弃即可:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BqDwQvNv-1691849612604)(C:\Users\HUASHUO\AppData\Roaming\Typora\typora-user-images\image-20230812220508295.png)]

  • nums[mid] < nums[right],就说明最小值一定在中间值的左侧或者就是中间值,中间值右侧的区域直接舍弃即可:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8eu1wOe-1691849612604)(C:\Users\HUASHUO\AppData\Roaming\Typora\typora-user-images\image-20230812220756078.png)]

  • 随着区间的不断缩小,leftright最终就会相等,其最后停留的位置也就是数组的最小值

实现代码

int findMin(int* nums, int numsSize) {
    int left = 0;
    int right = numsSize - 1;

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

        //如果中间值大于最右边的值,那么最小值一定在中间值的右边
        if (nums[mid] > nums[right])
            left = mid + 1;
        //否则,最小值就在最右边的值的左边,也可能就是这个中间值
        else
            right = mid;
    }

    //循环结束时,left和right所在的位置就是最小值的位置
    return nums[left];
}

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

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

相关文章

流量,日志分析--理论

提供资料&#xff1a; Wireshark 基本语法&#xff0c;基本使用方法&#xff0c;及包过虑规则 : https://blog.csdn.net/qq_17457175/article/det ails/53019490 ctf 常见流量分析题目类型 : https://ctf-wiki.org/misc/traffic/introduction/ windows 日志 : https://jone…

内网横向移动—ARP攻击图片捕捉数据劫持DNS劫持

内网横向移动—ARP攻击&图片捕捉&数据劫持&DNS劫持 1. ARP1.1. APR介绍1.1.1. ARP工作原理1.1.2. APR欺骗工作原理 1.2. 环境准备1.3. 适用场景 2. ARP断网攻击演示2.1. 使用kali进行演示2.1.1. nmap判断存活2.1.2. 安装工具2.1.3. 攻击Windows 10虚拟机2.1.3.1. 查…

VMware 16 Pro将电脑里的文件移动到虚拟机中【附带可能出现的问题和解决】

VMware 16 Pro将电脑里的文件移动到虚拟机中 1.使用VM tools 打开VM ware会出现下面的&#xff0c;直接点击安装。 点击下一步 选哪个都行 之后会重启虚拟机&#xff0c;然后就可以使用了。 我没有程序可以打开压缩包&#xff0c;显示我的虚拟机网络没法用&#xff0c;点击…

Redis实战案例26-签到功能

1. BitMap 假如用户数量为一千万&#xff0c;平均每人每年签到次数为 10 次&#xff0c;则这张表一年的数据量为 1 亿条&#xff1b; 而每签到一次需要使用&#xff08;8 8 1 1 3 1&#xff09;共 22 字节的内存&#xff0c;一个月则最多需要 600 多字节&#xff0c;如果是…

配置Arduino+ESP32走过的巨坑

项目场景&#xff1a; 前几天去淘宝买了块ESP32拿来用&#xff0c;配置Arduino最新版ESP32 2.0.11走过的巨坑。 问题描述 先安装好了ArduinoIDE最新版&#xff08;教程里介绍去官网下&#xff09;&#xff0c;然后配置ESP32开发板&#xff0c;后面发现安装速度惊人。 去找加速…

SpringBoot项目(验证码整合)——springboot整合email springboot整合阿里云短信服务

目录 引出springboot整合email配置邮箱导入依赖application.yml配置email业务类测试类 springboot整合阿里云短信服务申请阿里云短信服务测试短信服务获取阿里云的accessKeyspringboot整合阿里云短信导包工具类 总结 引出 1.springboot整合email&#xff0c;qq邮箱&#xff0c;…

分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)

文章目录 01. Kafka 消费者分区再均衡是什么&#xff1f;02. Kafka 消费者分区再均衡的触发条件&#xff1f;03. Kafka 消费者分区再均衡的过程&#xff1f;04. Kafka 如何判定消费者已经死亡&#xff1f;05. Kafka 如何避免消费者的分区再均衡?06. Kafka 消费者分区再均衡有什…

Matlab绘制圆形(rectangle函数、viscircles函数和圆的参数方程)

基于matlab绘制圆形 一、rectangle函数 对于绘制圆心坐标为&#xff08;x&#xff0c;y&#xff09;半径为r的圆形&#xff0c;函数为&#xff1a; x0; y0; r1; rectangle(Position, [x-r,y-r,2*r,2*r], Curvature, [1 1],EdgeColor, r); axis equalEdgeColor表示颜色 二、…

STM32F429IGT6使用CubeMX配置串口通信配置DMA

1、硬件电路 2、设置RCC&#xff0c;选择高速外部时钟HSE,时钟设置为180MHz 3、配置USART1引脚 4、生成工程配置 5、部分代码 /* USER CODE BEGIN 0 */ volatile uint8_t rx_len 0; //接收一帧数据的长度 volatile uint8_t recv_end_flag 0; //一帧数据接收完成标志 uint8…

42. range函数—生成器函数-更新

【目录】 文章目录 1. range( )函数是什么&#xff1f;2. 知识回顾-列表的切片3. range( )函数的语法3.1 range( )函数语法3.2 参数说明3.3 列表切片和range函数的区别 4. 实操练习4.1 参数为一个正整数4.2 参数为04.3 参数为一个负整数4.4 有2个参数4.5 有3个参数4.6 步长为负…

【Freertos基础入门】freertos任务的优先级

文章目录 前言一、任务优先级1.Tick2.修改任务优先级 总结 前言 本系列基于stm32系列单片机来使用freerots 任务管理是实时操作系统&#xff08;RTOS&#xff09;的核心功能之一&#xff0c;它允许开发者以并发的方式组织和管理多个任务。FreeRTOS 是一个流行的开源RTOS&…

使用关键词一站式精准搜索指定期刊或会议论文集中的论文

问题描述 如题&#xff0c;例如&#xff0c;想要找点某主题的相关文献&#xff0c;当然要看本领域权威刊物了&#xff0c;假如你想从CCF人工智能类A级期刊找点文本相似度的论文&#xff0c;逐个点开期刊主页进行搜索&#xff0c;那就有点繁琐&#xff0c;不是一站式。 解决方…

小程序商城开发制作

当开发一个商城小程序时&#xff0c;费用是一个非常重要的考虑因素。然而&#xff0c;准确回答这个问题是有一定困难的&#xff0c;因为开发商城小程序的费用取决于多个因素。以下是一些可能影响价格的主要因素&#xff1a; 1. 功能需求&#xff1a;商城小程序的复杂程度和功能…

华为:为员工提供高质量住宿和配套服务,不对外经营房地产业务

华为官方发布声明指出&#xff0c;东莞棠雅实业投资有限公司是一家专门负责建设和管理华为员工园区配套人才房的公司&#xff0c;而不是从事房地产业务的企业。这意味着该公司的主要职责是为华为数万名员工提供高质量的住宿和配套服务&#xff0c;为其创造舒适便利的工作和生活…

[SpringBoot3]基础篇

二、SpringBoot基础篇 2.1什么是SpringBoot SpringBoot是目前流行的微服务框架&#xff0c;倡导“约定优于配置”&#xff0c;其目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了很多核心的功能&#xff0c;比如自动化配置starter&#xff08;启动器&a…

【配置环境】Linux下安装MySQL

目录 一&#xff0c;环境 二&#xff0c;安装步骤 1.使用包管理器安装MySQL 2.配置MySQL的安全选项 3.设置root用户使用密码进行身份验证&#xff08;可选&#xff09; 三&#xff0c;拓展知识 1.如何修改MySQL的密码策略&#xff1f; 一&#xff0c;环境 VMware Workst…

Linux —— 文件系统

目录 一&#xff0c;背景 二&#xff0c;文件系统 一&#xff0c;磁盘简介 磁盘分为SSD、机械磁盘&#xff1b;机械磁盘&#xff0c;即磁盘高速转动&#xff0c;磁头移动到读写扇区所在磁道&#xff0c;让磁头在目标扇区上划过&#xff0c;即可完成对扇区的读写操作&#xff…

数字经济对产业结构升级和创业增长的影响(2011-2021年)

参照刘翠花&#xff08;2022&#xff09;的做法&#xff0c;对来自中国人口科学《数字经济对产业结构升级和创业增长的影响》一文中的基准回归部分进行复刻。文章从理论层面分析数字经济发展对产业结构升级、创业增长的影响及其机理&#xff0c;并利用2011-2021年中国省级面板数…

数据结构刷题训练:用栈实现队列(力扣OJ)

目录 前言 1. 题目&#xff1a;用栈实现队列 2. 思路 3. 分析 3.1 定义 “ 队列 ” 3.2 创建队列 3.3 入队 3.4 队头数据 3.5 出队 3.6 判空和销毁 4.题解 总结 前言 栈和队列是数据结构中的两个重要概念&#xff0c;它们在算法和程序设计中都有着广泛的应用。本文将带你深入了…

K8S系列文章之 Docker安装使用Kafka

通过Docker拉取镜像的方式进行安装 照例先去DockerHub找一下镜像源&#xff0c;看下官方提供的基本操作&#xff08;大部分时候官方教程比网上的要清晰一些&#xff0c;并且大部分教程可能也是翻译的官方的操作步骤&#xff0c;所以直接看官方的就行&#xff09; 老实说Kafka…