博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[重新解答]百度笔试:数组按频次排列
阅读量:4092 次
发布时间:2019-05-25

本文共 1184 字,大约阅读时间需要 3 分钟。

题意为从一个乱序数组中,将其中的整数按照出现的频次多少来排列(并且出现几次就排列几个),比如输入为[1,2,1,2,3,3,1,6,4,4,4,4],那么输出就应该为[4,4,4,4,1,1,1,2,2,3,3,6],其中,如果某两个数字的出现频次相同,那么就按照输入用例中的原顺序排列。

[原题链接]


#include 
#include
#include
#include
using namespace std;struct Data{
int key; int count; int order; Data(int K, int C, int O): key(K), count(C), order(O) {
}};struct MyComp{
bool operator()(const Data d1, const Data d2) const {
if(d1.count != d2.count ) {
return d1.count > d2.count ; } else {
return d1.order <= d2.order; } }};int main(int argc, const char **argv){
vector
v {
1, 3, 3, 3, 1, 2, 1, 2, 6, 2, 4, 4, 4, 4}; set
s; map
> m; int order = 0; for(int &i : v) { auto it = m.insert(make_pair(i, make_pair(1, order++))); if(!it.second) { order--; ++(it.first->second.first); } } for(int &i : v) { s.insert(Data(i, m[i].first, m[i].second)); } for (auto it = s.begin(); it != s.end(); ++it) { // cout << it->key << "|" << it->count << "|" << it->order << endl; cout << it->key << endl; // 4 4 4 4 1 1 1 3 3 3 2 2 2 6 } return 0;}

在这里插入图片描述

转载地址:http://urcii.baihongyu.com/

你可能感兴趣的文章
浏览器兼容性问题解决方案 · 总结
查看>>
一个很棒的Flutter学习资源列表
查看>>
为什么你应该放弃React老的Context API用新的Context API
查看>>
Flutter 布局控件完结篇
查看>>
Koa2初体验
查看>>
Koa 2 初体验(二)
查看>>
Koa2框架原理解析和实现
查看>>
vue源码系列文章good
查看>>
你不知道的Virtual DOM
查看>>
VUE面试题总结
查看>>
写好JavaScript条件语句的5条守则
查看>>
原生JS中DOM节点相关API合集
查看>>
【TINY4412】U-BOOT移植笔记:(7)SDRAM驱动
查看>>
【TINY4412】U-BOOT移植笔记:(12)BEEP驱动
查看>>
单链表的修改和删除
查看>>
C++的三个基本特征:封装、继承、多态
查看>>
C++虚函数的总结
查看>>
什么是URL地址?
查看>>
C++多态的实现方式总结
查看>>
学习C++需要注意的问题
查看>>