class Solution {
public:
int search(vector<int>& nums, int target) {
int n=nums.size();
int l=0;
int r=n-1;
while(l<=r)
{
int mid=(l+r)/2;
if(nums[n-1]>nums[0])
{
if(nums[mid]>target) r=mid-1;
else if(nums[mid]<target) l=mid+1;
else return mid;
continue;
}
if(nums[0]<=target)
{
if(nums[mid]<target&&nums[mid]<nums[0])
r=mid-1;
else
{
if(nums[mid]>target) r=mid-1;
else if(nums[mid]<target) l=mid+1;
else return mid;
}
}
else
{
if(nums[mid]>target&&nums[mid]>=nums[0]) l=mid+1;
else
{
if(nums[mid]>target) r=mid-1;
else if(nums[mid]<target) l=mid+1;
else return mid;
}
}
}
return -1;
}
};