📌  相关文章
📜  查找频率在[l,r]范围内的数组元素(1)

📅  最后修改于: 2023-12-03 15:10:47.198000             🧑  作者: Mango

查找频率在[l,r]范围内的数组元素

在处理数组时,有时候需要查找频率在特定范围内的元素。这种操作可以使用哈希表或者有序映射来实现。下面是两种实现方式:

哈希表

使用哈希表来记录数组中每个元素的出现次数,然后遍历哈希表,统计频率在[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;
}
  • 时间复杂度:O(N);
  • 空间复杂度:O(N)。
有序映射

使用有序映射来记录数组中每个元素的出现次数,然后遍历有序映射,统计频率在[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;
}
  • 时间复杂度:O(NlogN);
  • 空间复杂度:O(N)。

以上两种方式可以根据实际需求选择其中一种。

以上就是查找频率在[l,r]范围内的数组元素的介绍。