2563. 统计公平数对的数目

news/2025/7/9 10:52:08/文章来源:https://www.cnblogs.com/WrRan/p/18405611
题目链接 2563. 统计公平数对的数目
思路 排序+二分(upper_bound - lower_bound)
题解链接 两种方法:二分查找 / 三指针(Python/Java/C++/Go)
关键点 排序并不影响答案(数对数量未变化)
时间复杂度 \(O(n\log n)\)
空间复杂度 \(O(1)\)

代码实现:

class Solution:def countFairPairs(self, nums: List[int], lower: int, upper: int) -> int:nums.sort()def upper_bound(val, lo, hi):while lo + 1 < hi:mid = (lo+hi)//2if nums[mid] > val:hi = midelse:lo = midreturn hidef lower_bound(val, lo, hi):while lo + 1 < hi:mid = (lo+hi)//2if nums[mid] < val:lo = midelse:hi = midreturn hianswer = 0for j, x in enumerate(nums):r = upper_bound(upper-x, -1, j)l = lower_bound(lower-x, -1, j)answer += r-lreturn answer
Python-标准库
class Solution:def countFairPairs(self, nums: List[int], lower: int, upper: int) -> int:nums.sort()answer = 0for j, x in enumerate(nums):r = bisect_right(nums, upper-x, 0, j)l = bisect_left(nums, lower-x, 0, j)answer += r-lreturn answer

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2181. 合并零之间的节点

给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0 。返…

第20篇 window系统安装Redis流程

1.下载 Redis for Windows Redis 官方并没有提供 Windows 版本的安装包,但你可以使用 Microsoft 维护的 Windows 版本的 Redis。你可以从以下链接下载 Redis for Windows:2.安装 Redis 运行安装程序: 双击下载的 .msi 文件,启动安装程序。 按照安装向导的提示进行安装。这里…

C++顺序结构(1)任务

1、下载并观看视频(照着做,多看几遍) https://www.jianguoyun.com/p/DWCNkNEQi8_wDBj5ptYFIAA 2、两项照着做的任务

2080. 区间内查询数字的频率

题目链接 2080. 区间内查询数字的频率思路 二分法(upper_bound - lower_bound)题解链接 简洁写法:统计位置+二分查找(Python/Java/C++/Go/JS/Rust)关键点 预先处理得到每个值所处位置的列表时间复杂度 \(O(n + m \log n)\)空间复杂度 \(O(n)\)代码实现: class RangeFreqQ…

在 Windows 上使用 scp 命令

scp -P 22 -r local_dir user@remote_host:~ scp -P 22 local_file user@remote_host:path/to/dest_file

开学考试

在今天的开发过程中,我深刻体会到了软件开发的复杂性与挑战性,同时也收获了许多宝贵的经验和教训。 首先,面对一个新的项目,尤其是像生产管理系统这样的复杂应用,最重要的是要有清晰的结构设计。在设计 PlanManagement 类时,我意识到良好的代码结构不仅能够提高代码的可读…

xlam插件制作实验手册

大家来和笔者一起做一个xlam插件吧。很简单,很详细。 楔子excel支持自定义菜单栏,但是我在搜索如何制作菜单栏,以及如何制作addin文件的时候,即使是最好的例子,也只是点到为止,做了一个按钮就结束了。想要再进一步,竟然就没有合适的二手资料了。所以自然笔者就决定自己补…

1170. 比较字符串最小字母出现频次

题目链接 1170. 比较字符串最小字母出现频次思路 题意不易理解;排序+二分(upper_bound)题解链接 Python简洁解法关键点 预先处理words时间复杂度 \(O((n+m)p)\)空间复杂度 \(O(1)\)代码实现: class Solution:def numSmallerByFrequency(self, queries: List[str], words: L…