旋转排序数组问题的思考

有序数组旋转后的查找问题

看到牛客上有些人的做法虽然简单但是不容易想到,这里分享一个常规思路,二分查找有序一端。在有序数组旋转后的问题上都可以使用

举例

有序数组旋转形如:4,5,6,7,0,1,2 或者 [3,4,5,1,2],要求查找 min 或者 target ,复杂度要做到O(logn),可以使用这种方法;

核心

以Mid二分,那么总有一个区间是有序的:

比如 4,5,6,7,0,1,2中: mid = nums3 = 7,4,5,6有序;

如何判断哪边有序?if(nums[left] <= nums[mid]) ;此时left, mid就是有序的,相反mid, right有序;

确定有序端后:

比如left, mid有序,查找target,那么就判断target是否在有序这段,如果在,right = mid - 1;如果不在,left = mid + 1; 另一端有序也是这样处理;

总结

这种解决方法很简单也很好理解,并且在处理排序数组旋转的问题上具有普遍适用性。

可以用这种方法练手力扣33、153两道题;秒杀

相关推荐
老师我太想进步了202626 分钟前
【数据结构-4】算法美学之顺序表
数据结构·算法
风影同志7832440 分钟前
编码器是激活函数吗?—— 一个看起来很像、其实不是的类比
算法
UIU11444 分钟前
P1481 魔族密码
c++·算法·动态规划
加宝的起点雷达4 小时前
40 条候选里 38 条来自同一个源,主卡整屏重样
人工智能·算法·创业
秋天的怀念_David4 小时前
算法一千零一夜 · 第二十六夜 协议的母语
java·spring boot·算法
闻缺陷则喜何志丹7 小时前
【C++特性】四种类型转
c++·算法·类型转换
喵本喵叁肆7 小时前
用 Boosting 把弱隐私算法炼成强隐私算法(英文原题:Boosting and Differential Privacy (FOCS 2010))
算法·集成学习·boosting
GrowingIO技术社区7 小时前
CDP、行为分析、归因与营销自动化有什么区别?
数据结构·数据挖掘·数据分析