跳过正文

面试算法错题

·227 字·1 分钟· loading ·
3ing
作者
3ing
Always looking forward to tomorrow.
目录

前K个高频元素 (掌握程度:低) [面试未做出]
#

想到是桶排序了,但是具体的部分未实现出来,然后面试官还不知道这个解法,下去还是得重点看一下

class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int, int> cnt;
        int maxCnt = 0;
        for (int x : nums) {
            cnt[x]++;
            maxCnt = max(maxCnt, cnt[x]);
        }
        vector<vector<int>> buckets(maxCnt + 1);
        for (auto& [x, count] : cnt) {
            buckets[count].push_back(x);
        }
        vector<int> ans;
        for (int i = maxCnt; i >= 0 && ans.size() < k; i--) {
            for (int num : buckets[i]) {
                ans.push_back(num);
                if (ans.size() == k) break;
            }
        }
        return ans;
    }
};
func topKFrequent(words []string, k int) []int {
    feq := map[string]int{}
    maxCnt := 0
    for _, word := range words {
        feq[word]++
        maxCnt = max(maxCnt, feq[word])
    }
    buckets := make([][]string, maxCnt + 1)
    for word, cnt := range feq {
        buckets[cnt] = append(buckets[cnt], word)
    }
    res := []string{}
    for i := maxCnt; i >= 0 && len(res) < k; i-- {
        for _, word := range buckets[i] {
            res = append(res, word)
            if len(res) == k {
                break
            }
        }
    }
    return res;
}

相关文章

算法 1.31

·939 字·2 分钟· loading
每日算法-1.31

算法 2.1

·871 字·2 分钟· loading
每日算法-2.1

算法 1.28

·724 字·2 分钟· loading
每日算法-1.28