文章目录
题目链接
704. 二分查找
代码
法一 暴力枚举
int search(int* nums, int numsSize, int target){
for (int i = 0; i < numsSize; ++i) {
if (target == nums[i])
return i;
}
return -1;
}
法二 二分查找
int search(int* nums, int numsSize, int target){
int low = 0, high = numsSize - 1;
while (low <= high) { // 1
int mid = (low + high) / 2;
if (nums[mid] > target) {
high = mid - 1; // 2
}
else if (nums[mid] < target) {
low = mid + 1; // 2
}
else {
return mid;
}
}
return -1;
}
- low < high的话“[5] 5”会不进入循环直接返回-1
- 注意上界下界减1加1