451. Sort Characters By Frequency&&347. Top K Frequent Elements
来源:互联网 发布:梁朝伟唱功 知乎 编辑:程序博客网 时间:2024/06/03 23:01
451.
Given a string, sort it in decreasing order based on the frequency of characters.
Example 1:
Input:
"tree"
Output:
"eert"
Explanation:
'e' appears twice while 'r' and 't' both appear once.
So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
Example 2:
Input:
"cccaaa"
Output:
"cccaaa"
Explanation:
Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer.
Note that "cacaca" is incorrect, as the same characters must be together.
Example 3:
Input:
"Aabb"
Output:
"bbAa"
Explanation:
"bbaA" is also a valid answer, but "Aabb" is incorrect.
Note that 'A' and 'a' are treated as two different characters.
347.
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.
这两道题很类似,都要先统计一个集合里的词频,然后按词频排列,以某种方式进行输出。
统计集合里的词频可以用两种方式,map或者直接用数组记录。具体看情况,像347就只能用map,因为整数太多了。
451 using buckets
class Solution {public: string frequencySort(string s) { vector<int> freq(256, 0); vector<string> bucket(s.size()+1, ""); for(auto c : s){ freq[c]++; } for(int i=0; i!=freq.size(); ++i){ for(int j=0; j!=freq[i]; ++j) bucket[freq[i]]+=char(i); } string res=""; for(int i=bucket.size()-1; i>=0; --i){ res+=bucket[i]; } return res; }};347. using buckets
class Solution {public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int> m; for (int num : nums) ++m[num]; vector<vector<int>> buckets(nums.size() + 1); for (auto p : m) buckets[p.second].push_back(p.first); vector<int> ans; for (int i = buckets.size() - 1; i >= 0 && ans.size() < k; --i) { for (int num : buckets[i]) { ans.push_back(num); if (ans.size() == k) break; } } return ans; }};347.using sort
class Solution {public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int> freq; vector<int> res; for(int i=0; i!=nums.size(); ++i){ freq[nums[i]]++; } vector<pair<int, int>> hist; for(auto &it : freq){ hist.push_back(make_pair(it.first, it.second)); } sort(hist.begin(), hist.end(), [=](pair<int, int> &x, pair<int, int> &y) -> int{return x.second>y.second;}); for(int i=0; i<k; i++){ res.push_back(hist[i].first); } return res; }};
0 0
- 451. Sort Characters By Frequency&&347. Top K Frequent Elements
- leetcode解题之347. Top K Frequent Elements &451. Sort Characters By Frequency
- 频数相关的leetcode:451 Sort Characters By Frequency& 347 Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347.Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 尺取法求最短的子序列和
- 将 Web 应用性能提高十倍的10条建议
- 论文写作注意格式(写作论文的你们千万要看啊 都是坑等你跳)
- 浏览器兼容性问题:页面错乱 兼容模式和急速模式
- Object详解
- 451. Sort Characters By Frequency&&347. Top K Frequent Elements
- HTML5标签整理三
- Intent以及IntentFilter详解
- Android框架之XUtils框架
- AC自动机 专题训练[loading......]
- 线程池和异步线程
- Oracel 批量更新列值
- java socket参数详解:SoLinger
- JQuery EasyUI中文网