lower_bound:

[l, r)区间内大于等于val的第一个位置

int lower_bound(int l, int r, int val){
    while(l < r){
        int mid = l + ((r - l) >> 1);
        if(a[mid] < val){
            l = mid + 1;
        }else{
            r = mid;
        }
    }
    return l;
}

upper_bound:

[l, r)区间内大于val的第一个位置

int upper_bound(int l, int r, int val){
    while(l < r){
        int mid = l + ((r - l) >> 1);
        if(a[mid] <= val){
            l = mid + 1;
        }else{
            r = mid;
        }
    }
    return l;
}

[l, r)区间内小于等于val的第一个位置:upper_bound(l, r, val) - 1

[l, r)区间内小于val的第一个位置:lower_bound(l ,r, val) -1

相关文章:

  • 2022-02-28
  • 2021-11-27
  • 2021-10-26
  • 2021-08-30
  • 2021-12-25
  • 2021-06-05
猜你喜欢
  • 2022-12-23
  • 2021-08-17
  • 2022-12-23
  • 2021-12-28
  • 2021-10-06
  • 2022-02-21
相关资源
相似解决方案