33. Search in Rotated Sorted Array
题目
假设一个按升序排序的数组在某个未知的枢轴处被旋转过。
(即,[0,1,2,4,5,6,7] 可能变成 [4,5,6,7,0,1,2])。
你给定一个目标值进行搜索。如果在数组中找到,返回它的索引,否则返回 -1。
你可以假设数组中不存在重复元素。
你的算法的时间复杂度必须为 O(log n)。
示例 1:
输入: nums = [4,5,6,7,0,1,2], target = 0
输出: 4
示例 2:
输入: nums = [4,5,6,7,0,1,2], target = 3
输出: -1
解题思路
- 给出一个数组,数组中本来是从小到大排列的,并且数组中没有重复数字。但是现在把后面随机一段有序的放到数组前面,这样形成了前后两端有序的子序列。在这样的一个数组里面查找一个数,设计一个 O(log n) 的算法。如果找到就输出数组的小标,如果没有找到,就输出 -1 。