旋转排序数组问题的思考

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

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

举例

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

相关推荐
纪念 2295 小时前
C++ 算法(模拟)
开发语言·c++·算法
揽星河..5 小时前
【C语言】函数
c语言·算法
zwc32104320555 小时前
Day 2:图像内存、数据类型与stride
c++·人工智能·opencv·算法·计算机视觉
重生之小比特5 小时前
【算法拾光】模拟|提莫攻击 + N 字形变换
算法·模拟
XiYang-DING5 小时前
P4104.环形链表判断
数据结构·链表
東隅已逝,桑榆非晚5 小时前
AVL数实现
c++·笔记·学习·算法
驭渊的小故事6 小时前
LeetCode 算法题解:滑动窗口与数组合并的实战应用
算法·leetcode·职场和发展
.YM.Z6 小时前
优选算法——【双指针算法2】C++实现
开发语言·c++·算法
逆向编程6 小时前
MATLAB高级数据结构:cell、struct与table深度应用
开发语言·数据结构·matlab
zwc32104320557 小时前
第四周第五天——重构成类
c++·人工智能·opencv·算法·计算机视觉