搜索旋转排序数组
问题简述
在一个旋转过的有序数组中搜索某值,若存在返回下标,否则返回 -1。
进阶:时间复杂度要求 O(log n)
思路
“二分”的本质是两段性,而不是单调性;即只要二分后,左边满足某个性质,右边不满足某个性质,即可使用二分;
本题中,将数组从中间分开后,其中一个部分一定是有序的:
有序部分可以通过比较
a[m]
和a[0]
得到;此时如果 target 在有序部分,那么可以排除无序的一半,否则可以排除有序的一半;
细节详见代码;
Last updated
问题简述
在一个旋转过的有序数组中搜索某值,若存在返回下标,否则返回 -1。
进阶:时间复杂度要求 O(log n)
思路
“二分”的本质是两段性,而不是单调性;即只要二分后,左边满足某个性质,右边不满足某个性质,即可使用二分;
本题中,将数组从中间分开后,其中一个部分一定是有序的:
有序部分可以通过比较 a[m]
和 a[0]
得到;
此时如果 target 在有序部分,那么可以排除无序的一半,否则可以排除有序的一半;
细节详见代码;
Last updated