当前位置:网站首页>【acwing】789. 数的范围(二分基础)

【acwing】789. 数的范围(二分基础)

2022-07-07 07:46:00 percation

穿越隧道
在这里插入图片描述


#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int a[N];
int n,q;

int main(){
    
    scanf("%d%d",&n,&q);
    for(int i = 0; i < n; i++){
    
        scanf("%d",&a[i]);
    }
    while(q--){
    
        int x;
        scanf("%d",&x);
        int l = 0, r = n - 1;
        while(l < r){
    
            int mid = l + r >> 1;
            if(a[mid] >= x){
    
                r = mid;
            }
            else{
    
                l = mid + 1;
            }
        }
        if(a[l] == x) cout << l <<" ";//当前指针所指向的元素是否等于所查询的元素,若等于则说明该元素存在,返回该元素的左端点
        else{
    
            cout << "-1 -1" << endl;
            continue;
        }
        l = 0, r = n - 1;//判断所查询元素的右端点的位置
        while(l < r){
    
            int mid = (l + r + 1)>> 1;
            if(a[mid] <= x){
    
                l = mid;
            }
            else{
    
                r = mid - 1;
            }
        }
        cout << l << endl;
        
    }
    return 0;
}
原网站

版权声明
本文为[percation]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_45866781/article/details/125641487