2-二分查找
方法一:
左闭右闭,[left, right]
class Solution {
public:
int search(vector<int>& nums, int target) {
//[left, right]
int left = 0;
int right = nums.size() - 1 ;
while(left <= right)
{
int middle = left + ((right - left) / 2);
if(nums[middle] > target)
{
right = middle - 1;
}
else if(nums[middle] < target)
{
left = middle + 1;
}
else
{
return middle;
}
}
return -1;
}
};
方法二:
左闭右闭,[left, right]
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size();
while(left < right)
{
int middle = left + ((right - left) >> 1);
if(nums[middle] > target)
{
right = middle;
}
else if (nums[middle] < target)
{
left = middle + 1;
}
else
{
return middle;
}
}
return -1;
}
};