leetcode-347-Top K Frequent Elements
2017-04-19 19:59
441 查看
问题
题目:[leetcode-347]思路
Map怎么对value进行排序。参考了这篇链接[C++ STL中Map的按Key排序和按Value排序]
代码
typedef pair<int, int> Pair; bool cmp_by_value(Pair& lhs, Pair& rhs){ return rhs.second < lhs.second; } class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { vector<int> ret; map<int, int> mapper; int sz = nums.size(); if(k > sz) return ret; for(int i = 0; i < sz; ++i){ ++mapper[nums[i]]; } vector<Pair> vec( mapper.begin(), mapper.end() ); sort( vec.begin(), vec.end(), cmp_by_value ); for(int i = 0; i < k; ++i){ ret.push_back(vec[i].first); } return ret; } };
思路1
这个题,要是不用函数对象,要写在类里面还真不行。代码1
class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { map<int, int> counter; int sz = nums.size(); vector<int> ret; if(!sz || k < 1) return ret; for(int i = 0; i < sz; ++i){ ++counter[ nums[i] ]; } // sort the mapper typedef pair<int, int> pair_t; vector<pair_t> vec( counter.begin(), counter.end() ); struct CmpByValue{ bool operator()(pair_t& lhs, pair_t& rhs) {return lhs.second > rhs.second; } }; sort( vec.begin(), vec.end(), CmpByValue() ); for(int i = 0; i < k; ++i ){ ret.push_back( vec[i].first ); } return ret; } private: };
当然,函数对象有一个内联的特点,据说是要比函数调用效率高。
相关文章推荐
- LeetCode 347 Top K Frequent Elements
- leetcode 347[medium]--Top K Frequent Elements
- leetcode347:Top K Frequent Elements(medium)
- leetcode347 Top K Frequent Elements java
- LeetCode[347] Top K Frequent Elements
- [leetcode-347]Top K Frequent Elements(java)
- Leetcode_347_Top K Frequent Elements
- leetcode_347 Top K Frequent Elements
- leetcode_c++:哈希:Top K Frequent Elements(347)
- [Leetcode] #347 Top K Frequent Elements
- leetcode 347 Top K Frequent Elements C++
- Java [Leetcode 347]Top K Frequent Elements
- 频数相关的leetcode:451 Sort Characters By Frequency& 347 Top K Frequent Elements
- LeetCode 347 Top K Frequent Elements (HashMap && TreeMap 或 PriorityQueue 推荐)
- [347] Top K Frequent Elements
- 【leetcode】Top K Frequent Elements
- leetcode:Top K Frequent Elements
- leetcode之Top K Frequent Elements
- LeetCode:Top K Frequent Elements
- leetcode——347——Top K Frequent Elements