旋转排序数组问题的思考

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

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

举例

有序数组旋转形如: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两道题;秒杀

相关推荐
careathers7 小时前
【数据结构】基于比较的排序算法 - 交换排序
数据结构·算法·排序算法
H.莓飛8 小时前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
Rabitebla8 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
tellmewhoisi8 小时前
深度学习0:数学知识:正态分布1
人工智能·深度学习·算法
-梅8 小时前
算法(1) 动态规划
算法·动态规划
青少儿编程课堂9 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:Bellman-Ford与SPFA含负权最短路及负环检测全解析
c++·python·算法·bfs·信息学竞赛
octopus_c10 小时前
STL 之 string:auto 与范围 for、常用接口、模拟实现与深浅拷贝
开发语言·c++·算法
老师我太想进步了20261 天前
【数据结构-4】算法美学之顺序表
数据结构·算法
风影同志783241 天前
编码器是激活函数吗?—— 一个看起来很像、其实不是的类比
算法
UIU1141 天前
P1481 魔族密码
c++·算法·动态规划