二段非降序数组,先找出可能在哪个数组中,再用二分查找
class Solution {
public:
bool search(vector<int>& nums, int target) {
int index=0;
for(int i=0;i<nums.size()-1;i++){
if(nums[i]>nums[i+1]){
index=i+1;
break;
}
}
cout<<index<<endl;
int left=0;
int right=0;
if(target==nums[0]||target==nums[nums.size()-1]){
return true;
}
else if(target>nums[0]){
left=1;
right=index-1;
}
else if(target<nums[nums.size()-1]){
left=index;
right=nums.size()-2;
}
else{
cout<<"error"<<endl;
}
if(index==0)
{
left=0;
right=nums.size()-1;
}
while(left<right){
int mid=(left+right)/2;
if(target==nums[mid]) return true;
else if(target<nums[mid]){
right=mid-1;
}
else left=mid+1;
}
if(left==right&&nums[left]==target) return true;
return false;
}
};