【leetcode】Top K Frequent Elements

原创 2016年05月31日 11:53:12

Given a non-empty array of integers, return the k most frequent elements.

For example,
Given [1,1,1,2,2,3] and k = 2, return [1,2].

Note: 

  • You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
  • Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

利用桶排序,分三步解决,时间代价O(n):
  • 统计每个数的出现频率,存在unordered_map中
  • 定义一个vector<vector<int>>容器,将每个频率对应的数存在vector中
  • 倒序遍历容器,依次将k个数存入结果容器中

class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k)
    {
        unordered_map<int, int> dict;
        vector<int> result;
        for (auto n : nums)
            ++dict[n];
        vector< vector<int> > freq(nums.size() + 1);
        for (auto p : dict)
            freq[p.second].push_back(p.first);
        for (int i = freq.size() - 1; i >= 0 && result.size() < k; --i)
        {
            for (auto n : freq[i])
            {
                result.push_back(n);
                if (result.size() == k)
                    break;
            }
        }
        return result;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode 347. Top K Frequent Elements

1.题目Given a non-empty array of integers, return the k most frequent elements. 一个非空数组,要求返回前K个最频繁出现的元...

LeetCode笔记:347. Top K Frequent Elements

查找数组中出现的次数头几个的元素

【LeetCode】347. Top K Frequent Elements——基于Java的解决方案

347. Top K Frequent Elements Total Accepted: 12022 Total Submissions: 28556 Difficulty: Medium ...

[leetcode] 347. Top K Frequent Elements

Given a non-empty array of integers, return the k most frequent elements. For example, Given [1,1,1...

【leetcode】347. Top K Frequent Elements

Difficulty:medium Given a non-empty array of integers, return the k most frequent elements. Fo...

leetcode:Top K Frequent Elements

原题: Given a non-empty array of integers, return the k most frequent elements. For example, Given ...

leetcode_347 Top K Frequent Elements

题目分析:给定一个数组,返回数组中出现此多最多的k个元素,要求时间复杂度小于O(nlogn)。 解题思路:1)利用map实现统计数组中每个元素出现的次数;2)对1)统计的map按照元素出现的次数进行排...

leetcode题解-347. Top K Frequent Elements

题目:Given a non-empty array of integers, return the k most frequent elements. For example, Given [1,...

LeetCode347—Top K Frequent Elements

LeetCode347—Top K Frequent Elements

[LeetCode] Top K Frequent Elements

Given a non-empty array of integers, return the k most frequent elements.For example, Given [1,1,1,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)