Search in Rotated Sorted Array
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:
Input: nums = [4,5,6,7,0,1,2], target = 0
Output: 4Example 2:
Input: nums = [4,5,6,7,0,1,2], target = 3
Output: -1Analysis
Binary search variation.
因为有pivot,rotate过的sorted array无法直接用标准binary search,在判断和修改搜索区间时需要做一些改变。
先根据nums[mid] 与 nums[right] 的大小关系,先判断中点mid相对pivot的位置
然后根据target和nums[left], nums[right]的关系,有一段区间满足单调性,以此继续做binary search.

Solution
Binary Search - compare mid point determine search direction - O(logn) time - (10ms, 30.57%)
Binary Search - Find the pivot position first
Last updated
Was this helpful?