zoukankan      html  css  js  c++  java
  • papamelon 257. 下界 lower_bound(挑战程序设计竞赛)

    地址 https://www.papamelon.com/problem/257

    二分查找模板题
    二分有两个模板
    一个是找到符合查询数字的下边界<=
    一个是找到符合查询数字的上边界>=
    记熟会方便很多.

    本题是查找第一个大于等于k的数字
    是下边界

    #include <iostream>
    
    using namespace std;
    
    const int N = 1000010;
    int arr[N];
    
    int n, k;
    
    int main()
    {
    	cin >> n >> k;
    	for (int i = 0; i < n; i++) { cin >> arr[i]; }
    	int l = 0; int r = n ;
    	while (l < r) {
    		int mid = (l + r) >> 1;
    		if (arr[mid] >= k) { r = mid; }
    		else { l = mid + 1; }
    	}
    	cout << l << endl;
    
    	return 0;
    }
    

    也可以使用stl的二分函数api
    注意 lower_bound和upper_bound 分别等于数组中大于等于查找元素的位置 和数组中第一个大于查找元素的位置.

    #include <iostream>
    
    using namespace std;
    
    const int N = 1000010;
    int arr[N];
    
    int n, k;
    
    int main()
    {
    	cin >> n >> k;
    	for (int i = 0; i < n; i++) { cin >> arr[i]; }
    	int ans = lower_bound(arr,arr+n,k) -arr;
    	cout << ans<<endl;
    
    	return 0;
    }
    

    我的视频题解空间

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    js问题记录
    css问题记录
    vscode配置java+gradle开发环境
    js插件
    nginx笔记
    vue刷新当前路由
    koa踩坑记录
    react踩坑笔记
    ts踩坑笔记
    vue源码阅读笔记
  • 原文地址:https://www.cnblogs.com/itdef/p/15634747.html
Copyright © 2011-2022 走看看