• 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驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    前端博客收集
    Oracle 数据库性能调优
    vue解决跨域问题
    IIS相关问题及解决方案
    《软件测试工程师》学习笔记
    Matlab学习笔记(一)
    排序算法及分析
    Silverlight学习笔记——跨域调用
    Matlab学习笔记(三)
    C#的一些必备技术
  • 原文地址:https://www.cnblogs.com/itdef/p/15634747.html
Copyright © 2020-2023  润新知