找出数组中重复次数最多的数
2013-03-12 14:40
183 查看
#include<stdio.h> #include<iostream> #include<map> using namespace std; //以空间换时间 int GetMaxNum(int *arr,int len,int &num) {//找出数组arr中最大的数及其下标 int index = arr[0]; int i; for( i = 0;i <= len;++i) //注意这里是闭区间,理由在main函数 { if(arr[i] > index) { index = arr[i]; //最大的数 num = i; } } return index; } //利用C++中的map建立hash bool findMostFrequentInArray(int *array,int size,int &val,int &num) { if(size == 0) return false; map<int,int>m; for(int i = 0; i < size; ++i) { if(++m[array[i]] >= m[val]) { val = array[i]; num = m[array[i]]; } } return true; } int main() { int array[]={1,1,2,2,4,4,4,4,5,5,6,6,7,8,9,9,9,9,9,9}; int length = sizeof(array)/sizeof(array[0]); int i; int num = 0; int len = GetMaxNum(array,length,num); int *count = new int[len+1]; for(i = 0;i <= len; ++i) //注意这里是闭区间,因为有可能最后一个数是最多的 { //要保证count数组能取到下标为array[len]的值 count[i] = 0; } for(i = 0;i < length; ++i) { ++count[array[i]]; } printf("最大的数出现的次数是:%d\n",GetMaxNum(count,len,num)); printf("最大的数是:%d\n",num); int val = 0; if(findMostFrequentInArray(array,length,val,num)) cout<<"最大的数出现的次数是:"<<num<<endl<<"最大的数是:"<<val<<endl; return 0; }
相关文章推荐
- 找出数组中重复次数最多的数
- <C#>找出数组中重复次数最多的数值
- 找出一个数组中重复次数最多的字符暨找出Map中的最大Value及其对应的Key
- 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素
- js方式找出数组中重复数最多的那个数,并返回该数以及重复次数
- C# 找出数组中重复次数最多的数值
- 如何找出数组中重复次数最多的数
- 找出数组中重复次数最多的数
- 找出一个数组中重复次数最多的数
- 如何找出数组中重复次数最多的数
- 练手系列(1) 找出数组中重复次数最多的元素并打印
- 找出整型数组中重复次数最多的元素
- 问题8:如何找出数组中重复次数最多的数?
- java 找出n个元素数组中重复次数最多的数(假设出现次数大于n/2)
- 如何找出数组中重复次数最多的数
- 数组之找出Array中重复次数最多的数
- Java实现找出数组中重复次数最多的元素以及个数
- 如何找到一个数组里面重复次数最多的数