Search in Rotated Sorted Array
Description
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e.,
[0,1,2,4,5,6,7]
might become[4,5,6,7,0,1,2]
).You are given a target value to search. If found in the array return its index, otherwise return
-1
.You may assume no duplicate exists in the array.
Your algorithm’s runtime complexity must be in the order of
O(log n)
.
Example 1:
1 2
Input: nums = [4,5,6,7,0,1,2], target = 0 Output: 4
Example 2:
1 2
Input: nums = [4,5,6,7,0,1,2], target = 3 Output: -1
假设有一个升序的数组,但是从某处出现了旋转。
要在此数组中查找给定值,并且时间复杂度为O(log n)
。
Solution
此题为二分查找法的一个变形:
跟二分查找法一样,先找出中间数,判断是否命中。
如果未命中,则根据大小判断是落在左边还是右边。
当我们找出中间数之后,需要确定哪一边是完全升序的数组。然后判断目标是否落在该区域,以决定接下来在哪边进行查找。
|
|