Leetcode 704. 二分查找

阅读 58

2022-04-13

文章目录

题目链接

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;
}
  1. low < high的话“[5] 5”会不进入循环直接返回-1
  2. 注意上界下界减1加1

精彩评论(0)

0 0 举报