
class Solution {
public:
int search(vector<int>& nums, int target) {
int len = nums.size();
// if(len<2)
// return 0;
int left = 0;
int right = len-1;
// int mid = (left+right)/2;
for(int i = 0 ;i < nums.size();i++){
cout<<"nums: "<<i<<" "<<nums[i]<<endl;
}
while(left<=right){
int mid = (left+right)/2;
cout<<"flag: "<<left<<" "<<right<<endl;
cout<<"flag1: "<<mid<<" "<<nums[mid]<<endl;
if(nums[mid] == target)
return mid;
// 因为mid比较过了,所以不可能相等,下面与nums[mid]比较时,可以把等号去掉。
if(nums[0]<=nums[mid]){
if(nums[0]<=target&&nums[mid]>target)
right = mid-1;
else
left = mid+1;
}else{
if(target>nums[mid]&&target<=nums[len-1])
left = mid+1;
else
right = mid-1;
}
}
return -1;
}
};