📅  最后修改于: 2023-12-03 15:10:47.198000             🧑  作者: Mango
在处理数组时,有时候需要查找频率在特定范围内的元素。这种操作可以使用哈希表或者有序映射来实现。下面是两种实现方式:
使用哈希表来记录数组中每个元素的出现次数,然后遍历哈希表,统计频率在[l,r]范围内的元素。
#include <unordered_map>
#include <vector>
using namespace std;
vector<int> getElementsInRange(vector<int> &nums, int l, int r) {
unordered_map<int, int> mp;
for (int num : nums) {
mp[num]++;
}
vector<int> res;
for (auto &[num, freq] : mp) {
if (freq >= l && freq <= r) {
res.push_back(num);
}
}
return res;
}
使用有序映射来记录数组中每个元素的出现次数,然后遍历有序映射,统计频率在[l,r]范围内的元素。
#include <map>
#include <vector>
using namespace std;
vector<int> getElementsInRange(vector<int> &nums, int l, int r) {
map<int, int> mp;
for (int num : nums) {
mp[num]++;
}
vector<int> res;
for (auto &[num, freq] : mp) {
if (freq >= l && freq <= r) {
res.push_back(num);
}
}
return res;
}
以上两种方式可以根据实际需求选择其中一种。
以上就是查找频率在[l,r]范围内的数组元素的介绍。