789. 数的范围 (二分学习)

1.确定一个区间,使得目标值一定在区间中

2.找一个性质满足:

        (1)性质具有二段性

        (2)答案是二段性的分界点

3.整数二分(处理红色右端点和绿色左端点)

        

//代码1:右端点
int l=0,r=n;
while(l < r){
    int mid = (l+r+1) >> 1;
    if(在红色段){
        l = mid;
    }
    else r = mid - 1;
}
//代码2:左端点绿色
if是绿的,说明ans在【了,m】
int l=0,r=n;
while(l<r){
    int mid = l+r >> 1;
    if(是绿的){
        r = mid;
    }
    else l = mid + 1;
}

例题:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>

using namespace std;

int n,k;
int a[100010];

int main()
{
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    
    while(k--){
        int q;
        scanf("%d",&q);
        //找区间左端点
        int l=0,r=n-1;
        while(l<r){
            int mid = l+r >> 1;
            if(a[mid] >= q)//中位数大于q,说明右端点在左半段
            {
                r = mid;
            }
            else l = mid + 1;
        }
        if(a[l] == q){
            cout<<l<<" ";
            //右端点
            l = 0,r = n-1;
            while(l < r){
                int mid = (l + r + 1) >> 1;
                if(a[mid] <= q){
                    l = mid;
                }
                else r = mid - 1;
            }
            if(a[l] == q){
                cout<<l<<endl;
            }
        }
        else {
            cout<<"-1 -1"<<endl;
        }
    }
    return 0;
}

相关推荐

  1. 实现带有执行次二分搜索程序

    2024-04-01 19:26:01       29 阅读
  2. 少儿Python学习范围学习方法

    2024-04-01 19:26:01       29 阅读
  3. Python使用函数输出指定范围内Fibonacci个数

    2024-04-01 19:26:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 19:26:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 19:26:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 19:26:01       87 阅读
  4. Python语言-面向对象

    2024-04-01 19:26:01       96 阅读

热门阅读

  1. 【pytest】pytest` 中几种常用的参数化方法

    2024-04-01 19:26:01       43 阅读
  2. 2024年3月29日西山居游戏运维开发面经

    2024-04-01 19:26:01       44 阅读
  3. tcpdump 抓包

    2024-04-01 19:26:01       41 阅读
  4. 每日一题 2580统计将重叠区间合并成组的方案数

    2024-04-01 19:26:01       38 阅读
  5. 力扣top100-两数之和

    2024-04-01 19:26:01       41 阅读
  6. Web 应用基础 - ServletContext:获取与应用

    2024-04-01 19:26:01       43 阅读
  7. 砍树c++

    砍树c++

    2024-04-01 19:26:01      35 阅读
  8. 达梦数据库ODBC驱动安装和配置

    2024-04-01 19:26:01       46 阅读
  9. mysql 索引类型 FULLTEXT NORMAL SPATIAL UNIQUE 区别

    2024-04-01 19:26:01       40 阅读
  10. 前端面试题

    2024-04-01 19:26:01       35 阅读
  11. Spring面试题系列-6

    2024-04-01 19:26:01       39 阅读