数组
1. 二分查找
704. 二分查找
写法一
[left, right] 该写法下,mid 如果不是等于 target 则一定不是结果
class Solution {
public:
int search(vector<int>& nums, int target) {
int nums_size = nums.size();
int left = 0, right = nums_size - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] > target) right = mid - 1;
else if (nums[mid] < target) left = mid + 1;
else return mid;
}
return -1;
}
};
写法二
[left, right)
class Solution {
public:
int search(vector<int>& nums, int target) {
int nums_size = nums.size();
int left = 0, right = nums_size;
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] > target) right = mid;
else if (nums[mid] < target) left = mid + 1;
else return mid;
}
return -1;
}
};