左闭右闭。即下标left_=right_可以成立。即while(left_<=right_)。等号不可省略。
易错点:数组在声明的时候下标不可以是变量,即int left_=0;int right_=nums.size()-1;int middle_=(left_+right+)/2;时,不可以直接用nums[middle_]<target来判断界限,因为right_此时是变量,则middle_也是变量。正确做法应该是用一个int num=nums[middle_],再通过num与target进行比较。
题解C++:
class Solution {
public:
int search(vector<int>& nums, int target) {
int left_=0;
int right_=nums.size()-1;
while(left_<=right_)
{
int middle_=(left_+right_)/2;
int num=nums[middle_];
if(num<target)
left_=middle_+1;
else if(num>target)
right_=middle_-1;
else if(num==target)
return middle_;
}
return -1;
}
};