top-k-frequent-elements
2016-05-02 15:12
369 查看
https://leetcode.com/problems/top-k-frequent-elements/
class minHeap { // min Heap private: vector<pair<int, int> > array; int alen; void adjust_all() { for (int k=alen-1; k>=0; --k) { adjust(k); } } void swap(int i, int j) { int tmp = array[i].first; array[i].first = array[j].first; array[j].first = tmp; tmp = array[i].second; array[i].second = array[j].second; array[j].second = tmp; } void adjust(int k) { if (k*2+1 >= alen) { return; } int j = k * 2 + 1; if (k*2+2 < alen && array[k*2+1].second > array[k*2+2].second) { j = k * 2 + 2; } if (array[k].second > array[j].second) { swap(k, j); adjust(j); } } public: minHeap(int n) { alen = n; } void add(int num, int freq) { if (array.size() < alen) { array.push_back(make_pair(num, freq)); if (array.size() == alen) { adjust_all(); } } else { if (freq > array[0].second) { array[0].first = num; array[0].second = freq; adjust(0); } } } vector<int> getArray() { vector<int> ret; for (int k=alen-1; k>=0; --k) { ret.push_back(array[k].first); } return ret; } }; class Solution { unordered_map<int, int> umap; public: vector<int> topKFrequent(vector<int>& nums, int k) { int vlen = nums.size(); for (int i=0; i<vlen; ++i) { if (umap.find(nums[i]) != umap.end()) { umap[nums[i]] = umap[nums[i]] + 1; } else { umap[nums[i]] = 1; } } minHeap mh(k); for (unordered_map<int, int>::iterator itr = umap.begin(); itr != umap.end(); ++itr) { mh.add(itr->first, itr->second); } return mh.getArray(); } };
相关文章推荐
- UITableView基本使用(二)
- MataLab-GUI编程初探
- UIKit Dynamics动力系统入门
- codeforces 667C C. Reberland Linguistics(dp)
- UVa 1594 Ducci Sequence
- leetcode-62. Unique Paths
- POJ 1141 Brackets Sequence 括号匹配 区间DP
- java concurrent 之 SynchronousQueue
- [费用流 线段树] BZOJ 3267 KC采花 && 3272 Zgg吃东西 && 3638 Cf172 k-Maximum Subsequence Sum
- POJ3080 Blue Jeans
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
- C# Queue源码剖析
- Leetcode #347. Top K Frequent Elements 前K高频数 解题报告
- 使用Retrofit时出现 java.lang.IllegalArgumentException: URL query string "t={type}&p={page}&size={count}" must not have replace block. For dynamic query parameters use @Query.异常原因
- CodeForces 666A Reberland Linguistics(DP)
- CodeForces 666A Reberland Linguistics(DP)
- HNOI2016 序列(sequence)<莫队>
- 1382 - The Queue
- NSNotification在UITextField的应用
- UItableview 添加 uisearchController