2019.8.25中兴
1.数组按数字出现频次排序
题意为从一个乱序数组中,将其中的整数按照出现的频次多少来排列,比如输入为
[1,2,1,2,3,3,1,6,4,4,4,4],那么输出就应该为[4,4,4,4,1,1,1,2,2,3,3,6],
其中,如果某两个数字的出现频次相同,那么就按照输入用例中的原顺序排列
思路: 1、利用map记录,
2、然后交换key和value,存放在新map中,
3、然后倒序存入新数组中
map<int,int>m1;
for(auto &i:salay)
m1[i]++;
multimap<int,int>m2;
for(auto it = m1.begin();it!=m1.end();it++)
{
m2[it].insert({it->secend,it->first});
}
vector<int>valay2;
int count = 0;
for(auto it2 = m2.rbegin();it2!=m1.end();it2++)
{
count = it2->first;
while(count != 0)
{
valay2.push_back(it2->secend);
count--;
}
}
return valay2;
}
};