完成次数 2
一、题目
二、代码
class Solution
{
public:
int search(vector<int>& nums, int target)
{
int sz = nums.size();
int i;
int l=0;
int r=sz-1;
int return_flag=-1;
std::cout<<"watch sz: "<<sz<<endl;
if(sz==1&&nums[0]==target) return 0;
while(l<r)
{
//常规逻辑
if(nums[l+(r-l)/2]==target)
{
return_flag=l+(r-l)/2;
break;
}
if(nums[l+(r-l)/2]>target)
{
r=l+(r-l)/2;
}
if(nums[l+(r-l)/2]<target)
{
l=l+(r-l)/2;
}
//特殊处理
if(l==r-1&&nums[l]==target)
{
return_flag=l;
break;
}
if(l==r-1&&nums[r]==target)
{
return_flag=r;
break;
}
if(l==r-1&&nums[l]!=target&&nums[r]!=target) break;
}
return return_flag;
}
};