恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【LeetCode】33.搜索旋转排序数组

  • 首页
  • 资讯中心
  • /
  • 【LeetCode】33.搜索旋转排序数组

相关资讯

从 POSIX API 到网络协议栈:一条 TCP 连接的一生 2026/8/10 9:05:58
奇偶校验、循环冗余校验码、海明码详细介绍 2026/8/10 9:05:58
终极飞书文档批量导出工具:告别手动下载,25分钟完成700+文档迁移 2026/8/10 9:05:58

最新资讯

Shell脚本实现高效短信告警系统
突破上下文极限:递归记忆架构如何让 Transformer 拥有“无限”记忆与深度推理能力?
Grok Image 2.0 图像生成与编辑实战:从环境配置到精准控制
开源项目遭遇律师函:技术合规性的生死考验与应对策略
【Java核心高阶进阶】12-垃圾收集算法
Switch大气层系统终极性能优化指南:如何让游戏帧率翻倍

今日推荐

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南
告别语言障碍:KISS Translator 双语翻译插件终极指南
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

【LeetCode】33.搜索旋转排序数组

发布时间:2026/8/10 9:05:58
【LeetCode】33.搜索旋转排序数组 欢迎来到李耶的频道【LeetCode面试题】。搜索旋转排序数组33.搜索旋转排序数组题目整数数组nums按升序排列数组中的值互不相同。在传递给函数之前nums在预先未知的某个下标k0 k nums.length上进行了旋转使数组变为[nums[k], nums[k1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]下标从 0 开始计数。例如[0,1,2,4,5,6,7]在下标3处经旋转后可能变为[4,5,6,7,0,1,2]。给你旋转后的数组nums和一个整数target如果nums中存在这个目标值target则返回它的下标否则返回-1。你必须设计一个时间复杂度为O(log n)的算法解决此问题。输入nums [4,5,6,7,0,1,2], target 0 输出4输入nums [4,5,6,7,0,1,2], target 3 输出-1输入nums [1], target 0 输出-1提示1 nums.length 5000-10^4 nums[i] 10^4nums中的每个值都独一无二nums肯定会在某个点上旋转-10^4 target 10^4解法一二分查找一次遍历思路旋转排序数组从中间切开时至少有一半是连续递增的。利用这一点在二分查找中判断target是否落在有序的那一半从而缩小搜索范围。关键步骤是判断[left, mid]区间是否有序。functionsearch(nums,target){letleft0;letrightnums.length-1;while(leftright){constmidMath.floor((leftright)/2);if(nums[mid]target)returnmid;// 判断左半部分 [left, mid] 是否有序if(nums[left]nums[mid]){// 左半部分有序判断 target 是否在左半部分范围内if(nums[left]targettargetnums[mid]){rightmid-1;// 在左半部分查找}else{leftmid1;// 在右半部分查找}}else{// 右半部分 [mid, right] 有序if(nums[mid]targettargetnums[right]){leftmid1;// 在右半部分查找}else{rightmid-1;// 在左半部分查找}}}return-1;}时间复杂度 / 空间复杂度O(log n) / O(1)优势一次遍历完成查找空间 O(1)是面试中最推荐的写法解法二先找旋转点再二分查找思路先通过二分查找找到数组的最小元素旋转点将数组划分为两个有序部分。然后根据target的值决定在哪个有序部分进行标准二分查找。functionsearch(nums,target){constnnums.length;if(n0)return-1;// 1. 二分查找找旋转点最小值下标letleft0;letrightn-1;while(leftright){constmidMath.floor((leftright)/2);if(nums[mid]nums[right]){leftmid1;}else{rightmid;}}constpivotleft;// 2. 确定 target 在哪个有序区间letl,r;if(targetnums[pivot]targetnums[n-1]){lpivot;rn-1;}else{l0;rpivot-1;}// 3. 标准二分查找while(lr){constmidMath.floor((lr)/2);if(nums[mid]target)returnmid;if(nums[mid]target){lmid1;}else{rmid-1;}}return-1;}时间复杂度 / 空间复杂度O(log n) / O(1)优势逻辑分步清晰将复杂问题拆解为找旋转点 标准二分查找解法对比解法时间 / 空间复杂度优势推荐指数二分查找一次遍历O(log n) / O(1)代码简洁一次遍历完成⭐⭐⭐⭐⭐先找旋转点再二分O(log n) / O(1)分步逻辑清晰易于理解⭐⭐⭐⭐扩展题搜索旋转排序数组 II与本题相同但数组可能包含重复元素搜索指定目标值。寻找旋转排序数组中的最小值寻找旋转排序数组中的最小元素。搜索二维矩阵编写一个高效的算法来判断m x n矩阵中是否存在一个目标值矩阵具有特性每行每列均按升序排列。“举一隅不以三隅反则不复也。” —— 《论语·述而》关注李耶每天一道面试题一起卷起来

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号