文章

二分查找相关

二分查找相关

经典二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public int binarySearch(int[] nums, int target) {
    int left = 0;
    int right = nums.length - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2;

        if (nums[mid] == target) {
            return mid;
        } else if (nums[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    return -1;
}

二分查找条件临界点

1
2
3
4
5
6
7
8
9
static int lowerBound(int[] arr, int target, int l) {
    int r = arr.length - 1;
    while (l <= r) {
        int mid = l + (r - l) / 2;
        if (arr[mid] >= target) r = mid - 1;
        else l = mid + 1;
    }
    return l;
}
本文由作者按照 CC BY 4.0 进行授权