找出整型数组中重复次数最多的元素
2016-09-14 22:13
344 查看
#include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; struct number { int value; int count; }; int find(const vector<number> v, int value) { for (int i = 0; i < v.size(); i++) { if (v[i].value == value) return i; } return -1; } //重复次数由大到小排列 bool cmp(const number&a, const number&b) { return a.count>b.count; } int main() { int t; vector<int> v; while (cin >> t) v.push_back(t); //方法一 vector<number> vn; for (int i = 0; i < v.size(); i++) { int pos = find(vn, v[i]); if (pos >= 0) { vn[pos].count++; } else { number n; n.value = v[i]; n.count = 1; vn.push_back(n); } } sort(vn.begin(), vn.end(), cmp);//将vn按照重复次数递减顺序排列 cout << "重复次数最多的元素为:" << vn[0].value << ",出现次数为:" << vn[0].count << endl; //方法二 int count[100] = { 0 };//数组的长度要大于容器v中最大的元素 int value = 0; for (int i = 0; i < v.size(); i++) { count[v[i]]++; if (count[v[i]]>count[value]) value = v[i]; } cout << "重复次数最多的元素为:" << value << ",出现次数为:" << count[value] << endl; //方法三:使用map映射表,key是元素值,value是次数 map<int, int> m; int val = 0; for (int i = 0; i < v.size(); i++) { m[v[i]]++; if (m[v[i]] > m[val])//刚开始m[value]=0 val = v[i]; } cout << "重复次数最多的元素为:" << val<< ",出现次数为:" << m[val] << endl; } //1 5 4 3 4 4 5 4 5 5 6 //输出: //重复次数最多的元素为 : 5, 出现次数为:4 (方法一:如果出现次数相同,则按照原序优先输出5) //重复次数最多的元素为 : 4, 出现次数为:4 (方法二和三:如果出现次数相同,则按照大小顺序优先输出4) //重复次数最多的元素为 : 4, 出现次数为:4
相关文章推荐
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 找出数组中重复次数最多的元素
- 找出数组中重复次数最多的元素并打印
- Java实现找出数组中重复次数最多的元素以及个数
- java 找出n个元素数组中重复次数最多的数(假设出现次数大于n/2)
- 练手系列(1) 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素并打印
- 找出数组里面元素出现次数最多的问题
- 找出数组中重复次数为2的元素,
- 华为机试—整型数组中出现次数最多的元素
- 数组中重复次数最多的元素
- 去除数组中重复项,并统计重复出现次数最多的元素及重复次数
- 找出数组里面元素出现次数最多的问题
- 找出数组中重复次数最多的数
- 如何找出数组中重复次数最多的数
- <C#>找出数组中重复次数最多的数值
- 找出数组中重复次数最多的数
- java找出一个数组中出现次数最多的那个元素
- 问题8:如何找出数组中重复次数最多的数?
- Majority Element 找出一个数组中出现次数最多的元素