news 2026/5/20 1:24:21

LeetCode 每日一题笔记 日期:2026.05.15 题目:153. 寻找旋转排序数组中的最小值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 每日一题笔记 日期:2026.05.15 题目:153. 寻找旋转排序数组中的最小值

LeetCode 每日一题笔记

0. 前言

  • 日期:2026.05.15
  • 题目:153. 寻找旋转排序数组中的最小值
  • 难度:中等
  • 标签:数组、二分查找

1. 题目理解

问题描述
给定一个无重复元素的升序数组,经过1~n次旋转后,找出并返回数组中的最小元素。
要求时间复杂度为O(log⁡n)O(\log n)O(logn)

示例

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

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

2. 解题思路

核心观察

  • 旋转后的数组可分为两个有序子数组,最小值就是右半部分的第一个元素;
  • 利用二分查找,通过比较arr[mid]arr[right],判断最小值所在区间:
    • arr[mid] > arr[right]:说明最小值在 mid 的右侧(含 mid+1);
    • arr[mid] <= arr[right]:说明最小值在 mid 的左侧(含 mid)。

算法步骤

  1. 初始化左右指针left = 0right = nums.length - 1
  2. 循环直到left == right
    • 计算mid = left + (right - left) / 2
    • 比较arr[mid]arr[right],移动指针缩小范围;
  3. 返回nums[left](或nums[right]),即为最小值。

3. 代码实现

packagelc153;classSolution{intbinary(int[]arr,intleft,intright){while(left!=right){intmid=left+(right-left)/2;if(arr[mid]>arr[right]){left=mid+1;}else{right=mid;}}returnarr[left];}publicintfindMin(int[]nums){returnbinary(nums,0,nums.length-1);}}

4. 代码优化说明

减少分支判断,直接将逻辑合并到主函数中,去掉单独的binary方法:

packagelc153;classSolution{publicintfindMin(int[]nums){intleft=0,right=nums.length-1;while(left<right){intmid=left+(right-left)/2;if(nums[mid]>nums[right]){left=mid+1;}else{right=mid;}}returnnums[left];}}

5. 复杂度分析

  • 时间复杂度O(log⁡n)O(\log n)O(logn)
    二分查找每次将区间减半,最多执行log⁡2n\log_2 nlog2n次循环。
  • 空间复杂度O(1)O(1)O(1)
    仅使用常数级额外变量,无递归栈或额外数组开销。

6. 总结

  • 核心思路:二分查找,利用旋转数组的局部有序性定位最小值;
  • 关键判断:通过arr[mid]arr[right]的大小关系,快速确定最小值所在区间;
  • 优化后代码逻辑更紧凑,去掉了不必要的方法调用,可读性和效率更高。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 1:24:13

Linux 负载计算:PELT 算法的指数衰减与多维度负载度量

简介在 Linux 内核调度体系中&#xff0c;负载度量是调度决策、负载均衡、CPU 频率调节的核心依据。3.8 内核之前采用的 per-rq 负载跟踪机制粒度较粗&#xff0c;仅能统计 CPU 运行队列整体负载&#xff0c;无法精准反映单个进程 / 调度实体的资源占用与需求&#xff0c;导致负…

作者头像 李华
网站建设 2026/5/20 1:20:29

系统架构设计师-2025年11月综合案例回忆版

问题 试题一 在电动车充电管理系统的架构设计评审会上,团队需要针对系统的关键质量属性进行分析。质量属性是软件构设计的核心关注点,通常通过场景来具体描述。评审会上,得出了以下质量属性场景描述: 用户提出修改交互界面功能,团队经评估后承诺在 10 人 / 天之内完成。…

作者头像 李华
网站建设 2026/5/20 1:20:28

西安智能体开发公司如何选择?这些注意点帮你避坑

随着AI大模型和智能体&#xff08;Agent&#xff09;技术的爆发&#xff0c;西安作为西部科技重镇&#xff0c;涌现出不少提供智能体开发服务的公司。但企业究竟该如何选择一家靠谱、有实力的合作伙伴呢&#xff1f;以下几点是关键的注意点&#xff1a;看全栈能力&#xff0c;而…

作者头像 李华
网站建设 2026/5/20 1:17:02

ZFX山海证券:AI推动能源高股息走强

ZFX山海证券&#xff1a;AI推动能源高股息走强近期能源板块再度被市场重新审视&#xff0c;AI基础设施扩张带来的电力需求正在改变传统能源资产的定价逻辑。数据中心算力扩容推动用电峰值持续上行&#xff0c;使天然气、原油运输与油气基础设施企业的现金流可见性显著提升。对此…

作者头像 李华
网站建设 2026/5/20 1:16:04

告别DLL缺失!用VS2019的Setup Project打包C++程序,保姆级配置指南

告别DLL缺失&#xff01;用VS2019的Setup Project打包C程序&#xff0c;保姆级配置指南 在C开发中&#xff0c;最令人头疼的问题之一莫过于程序在其他电脑上运行时出现"DLL缺失"的错误。这种问题不仅影响用户体验&#xff0c;也让开发者陷入反复调试的困境。本文将带…

作者头像 李华
网站建设 2026/5/20 1:11:53

任务拆解决策指南:Claude Code 在个人提效工作流中的 3 类手动干预时机

1. 任务拆解不是AI的默认能力,而是你必须亲手校准的决策点 大多数人第一次用 Claude Code 写一个“给用户发邮件并记录日志”的功能时,会直接丢过去一句:“帮我实现一个发送邮件的服务”。结果它生成了 300 行带 SMTP 配置、模板渲染、异步队列、重试逻辑、日志埋点的完整类…

作者头像 李华