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

LeetCode 每日一题笔记 日期:2026.05.22 题目:33. 搜索旋转排序数组

LeetCode 每日一题笔记0. 前言日期2026.05.22题目33. 搜索旋转排序数组难度中等标签数组、二分查找1. 题目理解问题描述给定一个升序数组在未知下标k处左旋后得到数组nums所有值互不相同。给定目标值target返回它在数组中的下标不存在则返回-1。要求时间复杂度为O(log⁡n)O(\log n)O(logn)。示例输入nums [4,5,6,7,0,1,2],target 0输出4解释目标值0位于下标4。输入nums [4,5,6,7,0,1,2],target 3输出-1解释目标值不存在于数组中。2. 解题思路核心观察旋转后的数组仍保持局部有序被mid分成的两个区间中必有一个是完全有序的利用二分查找先判断mid所在的区间是否有序再根据target与有序区间的边界关系决定下一步的搜索方向。算法步骤初始化左右指针left 0right nums.length - 1循环直到left right计算mid left (right - left) / 2若nums[mid] target直接返回mid判断左半区是否有序nums[mid] nums[left]若target在左半区范围内收缩右边界否则收缩左边界若右半区有序若target在右半区范围内收缩左边界否则收缩右边界循环结束未找到返回-1。3. 代码实现packagelc33;publicclassSolution{publicintsearch(int[]nums,inttarget){intleft0;intrightnums.length-1;while(leftright){intmidleft(right-left)/2;if(nums[mid]target){returnmid;}// 左半区有序if(nums[mid]nums[left]){if(targetnums[left]targetnums[mid]){rightmid-1;}else{leftmid1;}}// 右半区有序else{if(targetnums[mid]targetnums[right]){leftmid1;}else{rightmid-1;}}}return-1;}}4. 代码优化说明减少冗余判断通过逻辑等价简化分支保持可读性的同时压缩代码packagelc33;publicclassSolution{publicintsearch(int[]nums,inttarget){intleft0,rightnums.length-1;while(leftright){intmidleft(right-left)/2;if(nums[mid]target)returnmid;if(nums[mid]nums[left]){left(targetnums[left]targetnums[mid])?left:mid1;right(targetnums[left]targetnums[mid])?mid-1:right;}else{left(targetnums[mid]targetnums[right])?mid1:left;right(targetnums[mid]targetnums[right])?right:mid-1;}}return-1;}}5. 复杂度分析时间复杂度O(log⁡n)O(\log n)O(logn)二分查找每次将区间减半最坏情况下执行log⁡2n\log_2 nlog2​n次循环。空间复杂度O(1)O(1)O(1)仅使用常数级额外变量无递归栈或额外数组开销。6. 总结核心思路局部有序的二分查找利用旋转数组的特性每次只在有序区间内判断目标值位置关键技巧通过nums[mid]与nums[left]的大小关系快速判断哪一侧区间有序优化后代码通过三目运算符简化分支逻辑更紧凑同时保持原算法的正确性与时间复杂度。
http://www.gsyq.cn/news/1373085.html

相关文章:

  • Nsight System和Compute命令行
  • 开源项目推荐:ORIGIN AI Workspace —— 一键部署你的私有 AI 工作站
  • 四川钢板生产厂家名录|2026 年 5 月行情走势与价格预测 - 四川盛世钢联营销中心
  • 数据结构-队列(顺序存储、链式存储、双端队列)
  • 【AgenticCPS】普通人怎么靠 618 赚返利?一套 CPS 实操打法
  • 在命令行中运行.py文件报错No module named triton
  • 用Python+GM(1,1)模型预测业务恢复时间:以航空业为例,手把手教你做灰色预测
  • C++ 字符串快速指南
  • 超级IP智能体 一键追爆口播短视频IP热门复刻同款视频程序一键矩阵发布
  • 人体姿态检测数据集分享(适用于YOLO系列深度学习检测任务)
  • 2026年Q2四川消防维修维保品牌名录及选型指南:成都消防维修口碑/消防技术服务/消防改造公司/消防改造多少钱/选择指南 - 优质品牌商家
  • Armv9-A加密点缓存维护机制与SoC优化实践
  • SVN SSL证书验证失败的根源与四关卡排障法
  • AI 术语通俗词典:RAG
  • 智能控制 第六章——集成智能控制系统
  • 多无人机协同通信-计算
  • 从原理到代码:用Python仿真TOA、TDOA和RSS定位算法(附GitHub源码)
  • 保姆级教程:在AirSim中用Python实现四旋翼的实时避障(附完整代码与避坑点)
  • Wireshark与FTK Imager电子证据采集实战指南
  • 破解‘特质波动率之谜’?用Python回测A股创业板数据,看看风险与收益到底啥关系
  • 2026桥梁防撞护栏优质产品推荐榜:桥梁河道景观护栏、河道景观桥梁护栏、河道桥梁防撞护栏、灯光桥梁护栏、防撞道路护栏选择指南 - 优质品牌商家
  • @Transactional 为什么能生效?一次 Debug 看懂 Spring 如何偷偷加事务
  • How to download Messenger chat history?(下载Messenger聊天记录)
  • 别再纠结PCA和t-SNE了!用Python实战对比,手把手教你选对降维方法(附代码避坑)
  • OpenAI 推出的 GPT-5.5 大模型,倒逼接口芯片升级迭代@ACP#IX7024应用迭代
  • 【AI问答/前端】现代前端的满天过海局(二)
  • Android 全栈体系 150 讲 - 49 深度完整版 Android 常用设计模式 + 架构模式 源码剖析、业务落地、面试精讲
  • 成都钢管供应商、2026规格齐全按需定制拿货 - 四川盛世钢联营销中心
  • 基于模糊控制算法的水位控制研究(Matlab代码实现)
  • 基于Simulink的四开关buck-boost变换器闭环仿真模型