给你一个长度为 n 的数组 arr,并提供 q 个查询。你的任务是统计从索引 L 到 R(包括这两个索引)的子数组中整数 K 的出现次数。您应该返回一个大小为 q 的答案数组,其中包含每个查询的答案,答案数组中的 i 索引表示第 i 个查询的答案。
示例 1:
输入
n = 7
q = 2
arr = [1, 2, 2, 3, 2, 4, 1] (1, 2, 2, 3, 2, 4, 1)
查询 = [[1, 4, 2], [0, 6, 1]]
输出
[3,2]
说明
对于第一个查询 [1, 4, 2],从索引 1 到索引 4 的子数组是 [2, 2, 3, 2]。数字 数字 “2 ”出现了 3 次。
对于第二个查询 [0,6,1],从索引 0 到 6 的子数组是 [1,2,2,3,2,4、 1]. 数字 “1 ”出现了 2 次。
例 2:
输入
n = 4
q = 3
数组 = [5, 5, 5, 5]
queries = [[0, 3, 5], [1, 2, 5], [0, 1, 6]] 查询
输出:
[4,2,0]
说明
对于第一个查询 [0, 3, 5],子数组是 [5, 5, 5, 5],“5 ”出现了 4 次。
对于第二个查询 [1,2,5],子数组是 [5,5],“5 ”出现了 2 次。
对于第三个查询 [0,1,6],子数组是 [5,5],'6' 没有出现,所以答案是 0。
你的任务
你需要实现函数 countOccurrences。对于每个查询,您需要计算整数 K 在从索引 L 到 R 的 arr 子数组中的出现次数(均包括在内),并
返回一个大小为 q 的列表,其中每个元素都对应于该查询的答案。
通过DeepL.com(免费版)翻译
----------
把数据的索引放到hashmap中,然后用2个二分找到即可,也可以用线段树,不过我不会,也可以用官方的题解,map+treemap做,我也不会,(是真的没看懂。。。),二分找到上边界跟下边界。然后r-l+1,当然特殊的不存在的情况需要单独讨论一下。