波波老师,我在做第6章队列的347题时,在使用优先队列之外,尝试了下直接对unordered_map统计后的值的频率进行排序,其中的cmp函数如果不设为静态函数的话,就会报错,这是为什么呢?
代码如下:
class Solution {
static int cmp( const pair<int,int>& x, const pair<int,int>& y) {
return x.second > y.second;
}
public:
// 1. Sort the Value of map
vector topKFrequent(vector& nums, int k) {
assert( k > 0);
unordered_map<int,int> freq;
// get the frequency of each element
for( int i=0; i<nums.size(); ++i)
freq[ nums[i]] ++;
assert( k <= freq.size());
vector< pair<int,int> > record;
auto iter = freq.begin();
for( ; iter != freq.end(); ++iter)
record.push_back( make_pair( iter->first, iter->second));
sort( record.begin(), record.end(), cmp);
vector<int> res;
for( int i=0; i<k; ++i)
res.push_back( record[i].first);
return res;
}
}