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