代码随想录第一天 2023.7.12
题目链接:704. 二分查找 - 力扣(Leetcode)https://leetcode.cn/problems/binary-search/
考查知识点:数组,二分法
源代码如下:
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0;
int right=nums.size()-1;
int middle;
while(left<=right){
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;
}
};
需要注意的是:
1.每次进入while循环,middle的值都要被更新一次,故在代码中,middle的定义在while循环外,初始化值在循环内。
2.left和right的值:
nums[middle]>target,middle已经不在循环的范围内,故right=middle-1;
left的值同理。