leetcode_搜索旋转排序数组

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。

你可以假设数组中不存在重复的元素。

你的算法时间复杂度必须是O(logn) 级别。

示例 1:

输入:nums = [4,5,6,7,0,1,2], target = 0输出:4

示例 2:

输入:nums = [4,5,6,7,0,1,2], target = 3输出:-1

我的思路:依旧运用二分查找法,但是由于序列旋转了,所以相当于有两个升序列;在mid更新begin或则end时,则有特殊情况处理:

当nums[mid]>target时,正常情况下,我们跟新end=mid+1(相当于target在前面的升序中); 但可能target在后面的升序中,而mid此时在前面的升序中,此时则需要跟新begin=mid+1

当nums[mid]<target时,正常情况下,我们跟新begin=mid+1(相当于target在后面的升序中);但可能target在前面的升序中,而mid此时在前面的升序中,此时则需要跟新end=mid-1

代码实现:

                                                                                    咯咯咯

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,788评论 0 33
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 2,467评论 0 1
  • 33. Search in Rotated Sorted Array这道题我做了不止一次,附上几次的代码: (2)...
    __小赤佬__阅读 474评论 0 0
  • 故事有点长。 我们的故事该从哪里说起呢? 忘了第一眼见到你是什么感觉,总之现在回想起来在我印象里你是一个聪明的男孩...
    见不得光阅读 200评论 0 0
  • 我和小豹纹的关系至今我也没有个定义。我将这段经历比喻为“十七岁的荒谬爱情。” 用一颗悸动的少女心去谈了一场不算恋爱...
    慢半拍儿的闪电阅读 259评论 0 2