LeetCode[347] 前 K 个高频元素

https://leetcode.cn/problems/top-k-frequent-elements/description/

主要是用hash表
数据个数给定了,但是数据范围没有给定,可能是负数。
所以需要map来记录每个数的id

class Solution {
public:
    map<int, int> id;
    unordered_map<int, int> nid;
    int st[100010];
    int n = 1;
    pair<int, int> cnt[100010];
    vector<int> topKFrequent(vector<int> &nums, int k)
    {
        vector<int> ans;
        for (auto x : nums)
        {
            if (!id[x])
            {
                id[x] = n;
                nid[n] = x;
                n++;
            }
            cnt[id[x]].first++;
            cnt[id[x]].second = id[x];
        }
        sort(cnt + 1, cnt + n + 1);
        for (int i = n, j = 1; j <= k; i--, j ++) {
            ans.push_back(nid[cnt[i].second]);
        }
        return ans;
    }
};
posted @ 2022-11-22 20:09  星星亮了欸  阅读(24)  评论(0编辑  收藏  举报