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

news/2025/7/9 10:49:32/文章来源:https://www.cnblogs.com/WrRan/p/18405602
题目链接 2080. 区间内查询数字的频率
思路 二分法(upper_bound - lower_bound)
题解链接 简洁写法:统计位置+二分查找(Python/Java/C++/Go/JS/Rust)
关键点 预先处理得到每个值所处位置的列表
时间复杂度 \(O(n + m \log n)\)
空间复杂度 \(O(n)\)

代码实现:

class RangeFreqQuery:def __init__(self, arr: List[int]):positions = defaultdict(list)for i, v in enumerate(arr):positions[v].append(i)self.positions = positionsdef query(self, L: int, R: int, value: int) -> int:positions = self.positions[value]n = len(positions)def upper_bound():left, right = -1, nwhile left + 1 < right:mid = (left+right) // 2if positions[mid] > R:right = midelse:left = midreturn rightdef lower_bound():left, right = -1, nwhile left + 1 < right:mid = (left+right) // 2if positions[mid] < L:left = midelse:right = midreturn rightreturn upper_bound() - lower_bound()
Python-官方库
class RangeFreqQuery:def __init__(self, arr: List[int]):positions = defaultdict(list)for i, v in enumerate(arr):positions[v].append(i)self.positions = positionsdef query(self, L: int, R: int, value: int) -> int:positions = self.positions[value]return bisect_right(positions, R) - bisect_left(positions, L)

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

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

相关文章

在 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…

极大似然估计的思想及计算[例题]

0 前言本文主要介绍极大似然估计的意义,并举出例题帮助读者理解。1 思想极大似然估计(Maximum Likelihood Estimation, MLE)是一种在统计学中估计模型参数的方法。它的基本思想是:找到一组参数值,使得在这组参数下,观测到的数据出现的概率(即似然函数)最大。假如有一个…

9月9日java测验总结

平常多的是对java知识点的学习或者去抄别人的项目去学习,但是真的去让自己根据要求在一定时间内写出项目还是有些难度。 今天在写java测试卷的时候能明显感觉到在结构设计上没有那么的清晰明了,而是一种一坨代码堆在那里,看不出来哪是哪的感觉。 我觉得应该过去独立的完成项…

mysql 调优

一、缓冲池​​​​​14.5.1 Buffer Pool缓冲池是主内存中的一个区域,InnoDB在访问表和索引数据时将其缓存。缓冲池允许直接从内存访问经常使用的数据,从而加快处理速度。在专用服务器上,高达80%的物理内存通常分配给缓冲池。 为了提高大容量读取操作的效率,缓冲池被划分为…

大模型的两个重要能力 (IF + FC)

MiniCPM https://github.com/OpenBMB/MiniCPM 面壁智能推出的大模型,在如下方面支持能出众。 推理 长文本 RAG 都是常见的能力。 其中 指令遵从(IF=instruction follow) 和 工具调用(FC = function call), 威力强大, 可以用作很多语音控制场景。MiniCPM 3.0MiniCPM 3.0 是一…