搜索旋转排序数组
1、题目描述
33. 搜索旋转排序数组
2、思路:
数组经过旋转后,还是部分有序,还是用二分法,找到数组的mid,然后看到底是前半段有序,还是后半段有序,因为只要这半段是有序的,就可以用target去比较这半段的起点和这半段的终点,来判断target是否是在这半段中。就可以知道到底该往哪个方向缩小范围进行查找,也就是mid接下来该从哪半段去取。
3、代码:
class Solution { public int search(int[] nums, int target) { if (nums == null || nums.length == 0) { return -1; } if (nums.length == 1 && nums[0] == target) { return 0; } int l = 0; int r = nums.length - 1; while (l <= r) { int mid = (l + r) / 2; if (nums[mid] == target) { return mid; } if (nums[l] <= nums[mid]) { if (nums[l] <= target && target < nums[mid]) { r = mid - 1; } else { l = mid + 1; } } else { if (nums[mid] < target && target <= nums[r]) { l = mid + 1; } else { r = mid - 1; } } } return -1; } }
。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-02-13 spark双重key聚合解决数据倾斜问题
2020-02-13 常见hql底层执行原理
2020-02-13 Hive窗口函数实战使用