LeetCode 347. Top K Frequent Elements(出现频率最多的 k 个元素)
Posted SomnusMistletoe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 347. Top K Frequent Elements(出现频率最多的 k 个元素)相关的知识,希望对你有一定的参考价值。
题意:求出现频率最多的 k 个元素。
分析:统计每个元素出现次数,按出现次数将元素分组,然后按频率从高到低取k个元素。
class Solution { public: vector<int> v[100010]; vector<int> topKFrequent(vector<int>& nums, int k) { int len = nums.size(); map<int, int> mp; for(int i = 0; i < len; ++i){ ++mp[nums[i]]; } int ma = 0; for(map<int, int>::iterator it = mp.begin(); it != mp.end(); ++it){ v[it -> second].push_back(it -> first); ma = max(ma, it -> second); } int sum = 0; vector<int> ans; for(int i = ma; i >= 1; --i){ len = v[i].size(); if(sum + len <= k){ sum += len; for(int j = 0; j < len; ++j){ ans.push_back(v[i][j]); } } else{ for(int j = 0; j < len && j < k - sum; ++j){ ans.push_back(v[i][j]); } break; } } return ans; } };
以上是关于LeetCode 347. Top K Frequent Elements(出现频率最多的 k 个元素)的主要内容,如果未能解决你的问题,请参考以下文章
#Leetcode# 347. Top K Frequent Elements
Leetcode 347: Top K Frequent Elements
LeetCode OJ 347. Top K Frequent Elements hashmap+排序求解
leetcode347 - Top K Frequent Elements - medium