【C++二分查找】2563. 统计公平数对的数目

news2025/1/12 21:57:11

本文涉及的基础知识点

C++二分查找

LeetCode2563. 统计公平数对的数目

给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和两个整数 lower 和 upper ,返回 公平数对的数目 。
如果 (i, j) 数对满足以下情况,则认为它是一个 公平数对 :
0 <= i < j < n,且
lower <= nums[i] + nums[j] <= upper
示例 1:
输入:nums = [0,1,7,4,4,5], lower = 3, upper = 6
输出:6
解释:共计 6 个公平数对:(0,3)、(0,4)、(0,5)、(1,3)、(1,4) 和 (1,5) 。
示例 2:
输入:nums = [1,7,9,2,5], lower = 11, upper = 11
输出:1
解释:只有单个公平数对:(2,3) 。
提示:
1 <= nums.length <= 105
nums.length == n
-109 <= nums[i] <= 109
-109 <= lower <= upper <= 109

C++二分查找

性质一:排序后,公平数对不变。下面用分治法来证明:
∀ \forall i、j,排序后,新下标分别为:i1、,j1。
情况一:i==j,排序前后(i,j)和(j,i)不是公平数对;排序后,(i1,j1)和(j1,i1)也不是公平数对。
情况二:如果nums[i]+nums[j]不在[lower,upper],则(i,j),(j,i)不是公平数对;排序后,(i1,j1)、(j1,i1)也不是公平数对。
情况三:如果nums[i]+nums[j]在[lower,upper]。则(i,j)是公平数对,(j,i)不是。排序后,只有这两种情况:
一,(i1,j1)是数对,(j1,i1)不是数对。
二,(i1,j1)不是数对,(j1,i1)是数对。
无论那种情况,公平数对都是1,和排序前相同。

大致步骤

一,排序。
二,枚举nums[i]
三,nums[i+1,…]中寻找 nums[j]+nums[j] 在区间的数,即:
nums[j] >= lower - nums[i]
nums[j] <= upper - nums[j]
如果成立,则(i,j)一定是公平数对。

代码

核心代码

	class Solution {
		public:
			long long countFairPairs(vector<int>& nums, int lower, int upper) {
				sort(nums.begin(), nums.end());
				long long ret = 0;
				for (int i = 0; i < nums.size();i++) {
					const int& n = nums[i];
					auto it1 = lower_bound(nums.begin() + i+1, nums.end(), lower - n);
					auto it2 = upper_bound(nums.begin() + i+1, nums.end(), upper - n);
					ret += (it2 - it1);
				}
				return ret;
			}
		};

单元测试

vector<int> nums;
		int lower,  upper;
		TEST_METHOD(TestMethod1)
		{
			nums = { 3,4 }, lower = 6, upper = 6;
			auto res = Solution().countFairPairs(nums, lower, upper);
			AssertEx(0LL, res);
		}
		TEST_METHOD(TestMethod2)
		{
			nums = { 3,4 }, lower = 6, upper = 7;
			auto res = Solution().countFairPairs(nums, lower, upper);
			AssertEx(1LL, res);
		}
		TEST_METHOD(TestMethod11)
		{
			nums = { 0, 1, 7, 4, 4, 5 }, lower = 3, upper = 6;
			auto res = Solution().countFairPairs(nums, lower, upper);
			AssertEx(6LL, res);
		}	
		TEST_METHOD(TestMethod12)
		{
			nums = { 1,7,9,2,5 }, lower = 11, upper = 11;
			auto res = Solution().countFairPairs(nums, lower, upper);
			AssertEx(1LL, res);
		}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用住宅代理优化媒体监控,全面提升品牌管理与市场竞争力

引言 什么是媒体监控&#xff1f;主要用于哪里&#xff1f; 媒体监控面临的主要挑战 住宅代理在媒体监控中的作用 如何利用住宅代理进行媒体监控 总结 引言 在信息化时代&#xff0c;媒体监控&#xff08;media monitoring&#xff09;已成为企业进行品牌声誉管理、市场研…

喵喵蓝牙热敏打印机(下)

目录 前言一、电量、温度、缺纸检测1.电量检测2.针头温度检测3.缺纸检测 二、蓝牙APP通信打印1.蓝牙初始化2.APP通信打印 三、FreeRTOS任务整合 前言 喵喵蓝牙热敏打印机&#xff08;上&#xff09; 内容有点多&#xff0c;就分为了上下两篇。 一、电量、温度、缺纸检测 先启…

Codigger视频会议(Meeting):科技行业软件开发团队的协作革新

在数字化时代&#xff0c;软件开发团队的协作方式正在经历一场革命。远程工作已成为新常态&#xff0c;而Codigger视频会议&#xff08;Meeting&#xff09;作为这场变革的催化剂&#xff0c;正在帮助科技行业的团队突破地理限制&#xff0c;实现无缝协作。 随着科技行业的快速…

Adobe Audition AU 2023-23.6.6.1 解锁版下载和安装教程(专业的音频处理工具)

前言 Audition是Adobe旗下一款非常好用的音频处理工具&#xff0c;软件为用户们提供了功能强大的音频编辑功能和一个相对完善的工作流程&#xff0c;用户们无论是录制音乐、无线电广播还是视频配音&#xff0c;多音频合成&#xff0c;这款软件都能够给你足够的创作动力。audit…

MR400D工业级带网口4G DTU:RS232/RS485 TO LTE深度测评

在物联网技术日新月异的今天&#xff0c;数据传输的效率和稳定性成为了各行各业关注的焦点。作为一款集先进性与实用性于一身的物联网设备&#xff0c;工业级带网口的4G DTU&#xff08;数据传输单元&#xff09;以其强大的功能特性和广泛的应用场景&#xff0c;赢得了市场的广…

整合nacos遇到的小问题

1.nacos创建配置中心文件时&#xff0c;创建不了&#xff0c;原因是新版本nacos数据表有字段加了安全校验 2.bootStrap.yaml文件创建时。需注意文件名称和后缀

simulink种deadzone死区模块的理解和使用,使用simulink开发pid的时候经常添加deadzone(重要)

Dead Zone模块产生指定范围&#xff08;称为截止区&#xff09;内的零输出。输入输出的关系如下&#xff1a; 1、输入落入截止区&#xff0c;输出0 2、输入大于上限值&#xff0c;输出上限值 3、输入小于等于下限值&#xff0c;输出下限值 使用simulink开发pid的时候经常添…

人工智能在子宫内膜癌领域的研究进展|顶刊速递·24-08-12

小罗碎碎念 本期推文主题&#xff1a;人工智能在子宫内膜癌领域中的研究进展 昨天的推文主要介绍的是卵巢癌&#xff0c;有一小部分涉及到了子宫内膜癌&#xff0c;按照最新的规划&#xff0c;今天的推文是与子宫内膜癌相关的。 从事妇科肿瘤研究的老师/同学&#xff0c;可以好…

探索数字媒体产业园区的未来之路

随着科技的飞速发展和数字经济的崛起&#xff0c;数字媒体产业园区正迎来前所未有的机遇和挑战。未来&#xff0c;数字媒体产业园区的发展将主要体现在以下几个方面&#xff1a; 1. 技术驱动的创新 数字媒体产业园区将继续受到前沿技术的推动。人工智能、大数据、虚拟现实和增…

中小企业文档管理最佳方案:7个热门工具

本文将分享7大优质中小企业文档管理工具&#xff1a;PingCode&#xff1b;2. Worktile&#xff1b;3. 飞书文档&#xff1b;4. 语雀&#xff1b;5. 有道云笔记&#xff1b;6. 石墨文档&#xff1b;7. DocuWare。 在管理中小企业时&#xff0c;文档混乱和信息难以追踪是一个常见…

熬汤煮酱锅 全自动可倾式夹层锅的优势:

1. 省时省能 夹层锅的底部加装了隔热层&#xff0c;加热速度更快&#xff0c;热源均匀&#xff0c;可以让食物快速煮熟&#xff0c;大大缩短烹饪时间。同时&#xff0c;其隔热层还可以使锅底局部温度升高&#xff0c;达到减少热量损失、减少能源浪费的效果。 2. 防烫手 夹层锅…

【单片机】51单片机入门教程(一):深入理解普通IO口与外部中断

51单片机入门教程:深入理解普通IO口与外部中断 前言 51单片机是嵌入式系统开发中的经典之作,也是学习嵌入式开发的理想起点。虽然51单片机的基础结构由Intel公司最早推出,但如今市面上有许多厂商都推出了自己的51单片机型号,如STC的STC89C52RC等。这些型号虽然品牌不同,但…

C语言提高(1)

在C语言中&#xff0c;_CRT_SECURE_NO_WARNINGS 是一个宏定义&#xff0c;它通常与Microsoft Visual Studio&#xff08;MSVC&#xff09;编译器一起使用&#xff0c;用于禁用一些与安全相关的警告。这些警告通常与C标准库中的某些函数的安全性问题相关&#xff0c;特别是在处理…

Java -泛型

认识泛型 定义类&#xff0c;接口&#xff0c;方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>) 称为泛型类&#xff0c;泛型接口&#xff0c;泛型方法&#xff0c;他们统称为泛型。 public class ArrayList<E>{..... } 作用&…

嵌入式软件--数电基础 DAY 3

一、二进制 &#xff08;1&#xff09;文字表述 二进制数只能取0&#xff0c;1两个数字&#xff0c;逢二进一。 通过二进制表达文字。如战争时代的电报。 通过电灯泡的亮灭传递出信息。可以对灯亮和灯灭富裕一些含义&#xff0c;就能传达出想要的消息。 这就是编码和解码两…

[uview3]Popup 弹出层

项目场景&#xff1a;展会管理系统&#xff0c;通过弹出层的方式切换展会项目&#xff0c;效果如下&#xff1a; 弹出部分代码&#xff1a; 注意点&#xff1a;层级要设高一点&#xff0c;可能会其他元素遮挡出不来 <view style"z-index: 999"><up-popup …

轻度自闭症的温柔启航:星启帆的康复之旅

在儿童成长的道路上&#xff0c;自闭症作为一种复杂的神经发展障碍&#xff0c;给许多家庭带来了挑战与困扰。轻度自闭症&#xff0c;作为自闭症谱系中的一个类型&#xff0c;其症状表现相对较轻&#xff0c;但同样需要我们的关注与科学的干预。星启帆自闭症儿童康复机构&#…

叉车AI防撞预警系统 主动防撞 司机危险行为报警

叉车作为物料搬运设备中的主力军&#xff0c;叉车在港口、车站、机场、货场、工厂车间、仓库、流通中心和配送中心等场所大显身手&#xff0c;替代人工作业大大提高搬运效率。但其工作环境通常比较复杂&#xff0c;有时处于人车混杂的同一空间&#xff0c;作业安全高度依赖驾驶…

千元护眼台灯大PK,书客、爱德华医生和柏曼护眼台灯哪个好?

在当今社会&#xff0c;孩子们面临着越来越大的学习压力大&#xff0c;在追求学业成就的同时&#xff0c;我们也应关注学习环境对视力健康的影响。说到护眼&#xff0c;多在户外运动当然是很多人觉得的最佳选项&#xff0c;但很多时候&#xff0c;因为条件限制&#xff0c;学生…

充电宝是有线的好还是无线的好?适合大学生平价充电宝有哪些?

平价的充电宝推荐我当然是首选无线磁吸的啦&#xff0c;因为我自己也是有三十多款充电宝的测评经验了&#xff0c;之前总是用着有线的充电宝&#xff0c;就是会有各种麻烦&#xff0c;比如上下班通勤的时候&#xff0c;数据线总是给路边各种东西钩住&#xff0c;路过的电动车什…