数组中重复次数最多的数
2016-06-23 22:24
369 查看
题目:如何找出数组中重复次数最多的数。
方法一:以空间换时间,即hash法。可以定义一个数组 int count[MAX + 1],并将其数组元素都初始化为0;然后对原数组array[ ]进行遍历,并执行 count[ array[ i ] ]++ 操作;最后在count数组中找到最大的数,该数在count数组中对应的下标,即为array数组中重复次数最多的数。
具体实现如下:
备注:一般情况下,除非内存空间足够大,否则一般不采用这种方法。
方法二:使用map映射表,通过引入map表(map是STL的一个关联容器,它提供一对一的数据处理能力,其中第一个为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)来记录每一个元素出现的次数,然后判断次数大小,进而找出重复次数最多的元素。
具体实现如下:
方法一:以空间换时间,即hash法。可以定义一个数组 int count[MAX + 1],并将其数组元素都初始化为0;然后对原数组array[ ]进行遍历,并执行 count[ array[ i ] ]++ 操作;最后在count数组中找到最大的数,该数在count数组中对应的下标,即为array数组中重复次数最多的数。
具体实现如下:
#include <iostream> int MaxRepeat(int arr[],int len) { int max = arr[0]; for (int i = 0; i < len; i++) // 找出原数组中的最大值 { if(max <= arr[i]) max = arr[i]; } int *count = new int[max + 1]; for (int i = 0; i < (max + 1); i++) // 将新数组的元素全部初始化为0 count[i] = 0; // 也可使用 *(count + i) = 0; for (int i = 0; i < len; i++) // 记录每个数出现的次数 count[arr[i]]++; // 也可使用 (*(count+arr[i]))++; int MAX = count[0]; // count数组中的最大值 int j = 0; // count数组中最大值对应的下标(该下标就是原arr数组中出现次数最多的数) for (int i = 0; i < (max + 1); i++) { if (count[i] > MAX) { MAX = count[i]; j = i; } } delete [] count; return j; } int main(int argc, const char * argv[]) { int arr[] = {1,2,2,2,2,2,3,4,5,6,7}; int len = sizeof(arr)/sizeof(int); printf("出现次数最多的数为 %d\n", MaxRepeat(arr, len)); return 0; }
备注:一般情况下,除非内存空间足够大,否则一般不采用这种方法。
方法二:使用map映射表,通过引入map表(map是STL的一个关联容器,它提供一对一的数据处理能力,其中第一个为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)来记录每一个元素出现的次数,然后判断次数大小,进而找出重复次数最多的元素。
具体实现如下:
#include <iostream> #include <map> using namespace std; // 第二种方法(借助map) int MaxRepeat2(int arr[], int len) { map<int,int> m; int val = arr[0]; // 假设val为原数组中出现最多次数的数,并初始化为arr[0]; for (int i = 0; i < len; i++) { m[arr[i]]++; if (m[arr[i]] > m[val]) val = arr[i]; } return val; } int main(int argc, const char * argv[]) { int arr[] = {1,2,2,2,2,2,3,4,5,6,7}; int len = sizeof(arr)/sizeof(int); printf("出现次数最多的数为 %d\n", MaxRepeat2(arr, len)); return 0; }
相关文章推荐
- android Google Map获取地理位置信息的方法
- Spark RDD API详解(一) Map和Reduce
- Python中map()函数浅析
- Android使用Google Map浅谈
- Erlang中的映射组Map详细介绍
- c++中map的基本用法和嵌套用法实例分析
- 百度地图给map添加右键菜单(判断是否为marker)
- JavaScript中实现Map的示例代码
- jquery中map函数与each函数的区别实例介绍
- jquery中map函数遍历数组用法实例
- jquery与google map api结合使用 控件,监听器
- 浅谈jquery的map()和each()方法
- Jquery中map函数的用法
- JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
- JS模拟的Map类实现方法
- jquery遍历数组与筛选数组的方法
- JavaScript中实现map功能代码分享
- 用json方式实现在 js 中建立一个map
- Android Map新用法:MapFragment应用介绍
- js Map List 遍历使用示例