news 2026/6/10 15:00:12

hot100-53搜索旋转排序数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hot100-53搜索旋转排序数组

一、题目

nums升序排列,值互不相同,经过k次旋转,找出target的下标,如果没有返回-1。

二、思路

每次比较nums[mid]nums[left]nums[right],判断mid在哪一段,再决定如何缩小范围。

1. 如果nums[left] <= nums[mid]

→ 左半段[left, mid]升序的

  • target在这个范围内(即left <= target <= mid),则在左半段找

  • 否则,在右半段找

2. 如果nums[left] > nums[mid]

→ 右半段[mid, right]升序的

  • target在这个范围内(即mid <= target <= right),则在右半段找

  • 否则,在左半段找

总结:利用旋转数组“两段有序”的特性,通过比较nums[mid]nums[left]nums[right]判断哪一半是有序的,然后根据target是否落在该有序段内来决定搜索方向,实现高效的二分查找。

三、代码

class Solution { public int search(int[] nums, int target) { int left = 0, right = nums.length-1; while(left <= right){ int mid = left + (right - left) /2; if(target == nums[mid]) return mid; if(nums[left] < nums[mid]){ if(target>=nums[left] && target < nums[mid]){ right = mid -1; }else{ left = mid + 1; } }else{ if(target>nums[mid] && target <= nums[right]){ left = mid+1; }else{ right = mid - 1; } } } return -1; } }

总结:通过判断哪一段有序,再看 target 是否在该段的值域内,决定搜索方向

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:56:30

回溯+位运算|前缀和优化背包

汉字写一遍代码思路 可以提升和人沟通 和加深理解所以不可以只写完代码就去去丸了 还是要复习lc756class Solution { public:bool pyramidTransition(string bottom, vector<string>& allowed) {vector<int> groups[7][7];for (auto& s : allowed) {// A~F…

作者头像 李华
网站建设 2026/6/10 11:55:52

PostgreSQL 时间/日期处理指南

PostgreSQL 时间/日期处理指南 引言 PostgreSQL 是一款功能强大的开源关系型数据库系统,它提供了丰富的数据类型和功能,其中包括对时间/日期数据的支持。本文将详细介绍 PostgreSQL 中时间/日期类型的使用方法,包括数据类型、常用函数、操作和注意事项。 PostgreSQL 时间…

作者头像 李华
网站建设 2026/6/10 14:21:10

Doris资源组管理:精细化资源分配策略

Doris资源组管理:精细化资源分配的"食堂排队秘诀" 关键词:Doris资源组、精细化资源分配、查询优化、资源隔离、队列调度、Cgroup、多租户管理 摘要:当Doris作为大规模数据查询的"餐厅"时,如何让"食客"(查询)快速吃到"饭"(结果)…

作者头像 李华
网站建设 2026/6/10 13:37:05

毕业生都在用的十大降ai工具,建议收藏

家人们&#xff0c;现在学校查得是真严&#xff0c;不仅重复率&#xff0c;还得降ai率&#xff0c;学校规定必须得20%以下... 折腾了半个月&#xff0c;终于把市面上各类方法试了个遍&#xff0c;坑踩了不少&#xff0c;智商税也交了。今天这就把这份十大降AI工具合集掏心窝子…

作者头像 李华
网站建设 2026/6/10 13:08:37

fwrite与fflush作用

简单说&#xff1a; fwrite 负责“写数据”&#xff0c; fflush 负责“把缓冲里的内容真的推到文件/设备”。一、 fwrite 做什么&#xff1f;fwrite 是标准 C 里的带缓冲的文件写入函数&#xff0c;原型&#xff1a;csize_t fwrite(const void *ptr, size_t size, size_t nme…

作者头像 李华
网站建设 2026/6/10 12:50:35

《告别跨端运算偏差:游戏确定浮点数学库的核心搭建指南》

早期涉足游戏开发时,曾执着于浮点精度的极致提升,认为更高的精度就能消除所有差异,直到在一款多人协作游戏的测试中,见证过同一技能在PC端与移动端的伤害结算偏差、主机玩家与手机玩家看到的角色跳跃轨迹分歧—明明是相同的触发条件,却出现技能命中判定失效、物理道具飞行…

作者头像 李华