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