Map的按value值排序
2016-05-15 15:20
357 查看
Map自带按Key值排序的属性,但很多种情况下我们需要对Map容器进行按Vaule值排序,由于Map没有提供相应的API,我们只有自力更生了。可以利用Pair和自定义排序函数实现,比如我们拿LeetCode上的347题为例,统计一组数中出现次数最多的K个数,代码如下:
//自定义的pair比较函数,此函数需要定义成全局函数,设计成按second值排序 bool cmp(pair<int,int> a,pair<int,int> b){ return a.second>b.second; } class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { int len=nums.size(); unordered_map<int,int> dict; vector<pair<int,int>> temp; vector<int> res; //首先利用map统计各个数出现的次数,然后放进vector中,进行按照pair的second值的排序 for(int i=0;i<len;i++){ dict[nums[i]]++; } for(auto lt=dict.begin();lt!=dict.end();lt++){ temp.push_back(*lt); } sort(temp.begin(),temp.end(),cmp); for(int i=0;i<k;i++) res.push_back(temp[i].first); return res; } };
相关文章推荐
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转载)
- CodeForces 559B Equivalent Strings
- RequireJS使用注意细节
- RequireJS使用注意地方
- Frequent Pattern 挖掘之二(FP Growth算法)
- 深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- iOS开发UI篇—UIScrollView控件简单使用
- Android view中的requestLayout和invalidate方法
- Primefaces menu中的menuitem过多产生的问题
- 错误The request sent by the client was syntactically incorrect ()的解决
- Window和DecorView
- Android UI基础之SeekBar--SecondaryProgress
- 深入理解StringBuilder的使用方法
- 新增crawlingtosea.loaders.LoaderBitmapqueue包
- [LeetCode] Top K Frequent Elements
- DirectUI浅谈
- Material Design(三)--UI控件之CardView
- Material Design(二)--UI控件之RecyclerView
- build.gradle中引入jar
- could not execute query 项目中使用使用Hibernate作为持久层框架时,数据库改名后容易忽略的问题