Search in Rotated Sorted Array
Suppose a sorted array 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.
class Solution {
public:
int search(vector<int>& nums, int target) {
int len=nums.size();
if(len<1)
return -1;
int left=0,right=len-1;
while(left<=right)
{
int mid=(left+right)/2;
if(nums[mid]==target)
return mid;
if(nums[left]<nums[mid])//左边升序
{
if(nums[left]<=target && target<=nums[mid])//左边升序 目标在左边
{
right=mid-1;
}
else
left=mid+1;
}
else if(nums[left]>nums[mid])//右边升序
{
if(nums[mid]<=target && target<=nums[right])//右边升序 目标在右边
{
left=mid+1;
}
else
right=mid-1;
}
else //left=mid
left++;
}
return -1;
}
};