leetcode 33 搜索旋转排序数组
leetcode 33 搜索旋转排序数组
这个题需要仔细思考一下判断的条件,由于不是完全有序而是部分有序,所以不能像普通二分一样简单的判断大小
举个简单的例子
对于数组**nums=[6,7,8,9,1,2,3,4]**来说
left=0,right=8
通过二分计算出的中点idx=4 ,值为1 ,如果中点就是target,这当然皆大欢喜,直接返回对应的坐标就好
如果不是,这时候中点将数组划分成了两部分,其中至少有一部分是有序的数组,在本例中,中点右侧的**[2,3,4]**有序
那该如何判断哪边的数组有序呢,也比较简单,只需要比较nums[mid]与nums[left]的大小即可,若 ,则mid左侧有序,否则右侧有序。
之后我们需要比较target与num[mid]的大小,这时候也会涉及到分类讨论,由于markdown这传图片麻烦得很,就不再赘述了,自己画画图就能方便的看出,也可以看我发的连接里的官方题解里的视频讲解,那里面有图方便理解
代码如下
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WhatGhost!