甘州区住房和城乡建设局网站,免费做商城网站,windows软件开发流程,个人博客手机网站模板华为OD 数组去重和排序 C源码实现#xff0c;100%通过
目录
题目描述#xff1a;
示例1
代码实现#xff1a; 题目描述#xff1a; 给定一个乱序的数组#xff0c;删除所有的重复元素#xff0c;使得每个元素只出现一次#xff0c;并且按照出现的次数从高到低进行排…华为OD 数组去重和排序 C源码实现100%通过
目录
题目描述
示例1
代码实现 题目描述 给定一个乱序的数组删除所有的重复元素使得每个元素只出现一次并且按照出现的次数从高到低进行排序相同出现次数按照第一次出现顺序进行先后排序。
输入描述
一个数组
输出描述
去重排序后的数组
示例1
输入输出示例仅供调试后台判题数据一般不包含示例
输入 1,3,3,3,2,4,4,4,5 输出 3,4,1,2,5 备注
数组大小不超过100
数组元素值大小不超过100 代码实现
#include iostream
#include string
#include vector
#include algorithm
#include unordered_map
#include sstreamusing namespace std;int getIdx(vectorint arr, int tar) {for (int i 0; i arr.size(); i) {if (arr[i] tar) return i;}return -1;
}
bool cmp(vectorint first, vectorint second) {if (first[1] ! second[1]) {return first[1] second[1];}else {return first[2] second[2];}
}
int main()
{string s;getline(cin, s);replace(s.begin(), s.end(), ,, );stringstream ss(s);int v;vectorint arr;unordered_mapint, int ump;while (ss v) {arr.push_back(v);ump[v];}vectorvectorint ans;for (auto it : ump) {ans.push_back({ it.first,it.second,getIdx(arr,it.first) });}sort(ans.begin(), ans.end(), cmp);for (int i 0; i ans.size() - 1; i) {cout ans[i][0] ,;}cout ans.back()[0] endl;return 0;
}