📌  相关文章
📜  用于数组元素频率范围查询的 C++ 程序(1)

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

用于数组元素频率范围查询的 C++ 程序

这个程序是用于查询数组元素出现次数在给定频率范围内的 C++ 程序。它使用了一个哈希表来记录每个元素的出现次数,并遍历哈希表来确定符合条件的元素。

代码实现

以下是完整的程序实现。我们首先包含必要的标头文件,并定义一个典型的哈希表:

#include <iostream>
#include <unordered_map>
#include <vector>

using namespace std;

unordered_map<int, int> freq;

接下来,我们编写一个函数来计算数组中每个元素的出现次数。该函数使用 freq 哈希表来记录每个元素的频率:

void calc_freq(vector<int>& arr) {
    for (int i = 0; i < arr.size(); ++i) {
        freq[arr[i]]++;
    }
}

现在,我们可以编写一个函数来获取出现次数在给定范围内的元素。该函数将遍历 freq 哈希表,并将符合条件的元素添加到结果向量中:

vector<int> get_freq_range(int freq_min, int freq_max) {
    vector<int> res;
    for (auto it = freq.begin(); it != freq.end(); ++it) {
        if (it->second >= freq_min && it->second <= freq_max) {
            res.push_back(it->first);
        }
    }
    return res;
}

注意,我们使用了 C++11 中的新范围循环语法来遍历 freq 哈希表。这个语法也可以使用迭代器进行遍历,但是它更加简洁和易读。

最后,我们在 main 函数中使用这些函数来计算数组中出现的元素的出现次数,并返回出现次数为 2 或 3 次的元素:

int main() {
    vector<int> arr = {1, 2, 3, 3, 4, 4, 4, 5, 5};

    calc_freq(arr);

    vector<int> res = get_freq_range(2, 3);

    cout << "Elements with frequency 2 to 3: ";
    for (int i = 0; i < res.size(); ++i) {
        cout << res[i] << " ";
    }
    cout << endl;

    return 0;
}

总结

这个程序演示了如何使用哈希表来计算数组中每个元素的出现次数,并在其中执行一个查询。虽然这个程序看起来非常简单,但它可以用作更大和更复杂的程序中实现频率查询的构建块。