数组之找出Array中重复次数最多的数
2017-04-13 15:43
337 查看
//方法一:假设数组已排好序,时间复杂度为O(n); //若数组未排序,此方法要先排序,用快排O(nlogn),总时间复杂度为O(nlogn); #include<iostream> using namespace std; int findMostAppersNum(int *nums,int len) { int mostCount=1; int currCount=1; int mostNum=nums[0]; for(int i=0;i<len-1;i++) { int index=i+1; if(nums[i]==nums[index]) { currCount++; if(currCount>mostCount) { mostCount=currCount; mostNum=nums[i]; } } else currCount=1; } return mostNum; } int main() { int A[]={1,1,1,1,1,1,2,4,4,4,4,5,5,6,6,6,6,6,6,6,6,6,6,6,8,8,8}; int len=(sizeof(A)/sizeof(A[0])); int mostNum=findMostAppersNum(A,len); cout<<mostNum<<endl; system("pause"); return 0; } //方法二:利用hash表;数组无需排序,用map的value来记录每个元素出现的次数,然后判断次数大小; //关联性容容器map的特性之一:所有元素会根据元素的键值自动被排序;map不允许两个元素拥有相同的键值; #include<iostream> #include<vector> #include<map> using namespace std; int findMostAppersNum(vector<int> &nums) { map<int,int> maping; int len=nums.size(); int mostCount=1; int mostNum=nums[0]; for(int i=0;i<len;i++) { maping[nums[i]]++; if(maping[nums[i]]>mostCount) { mostCount=maping[nums[i]]; mostNum=nums[i]; } } return mostNum; } int main() { int A[]={1,1,1,1,2,4,4,4,4,4,4,4,4,5,5,6,6,6,6,8,8,8,8,8}; int len=(sizeof(A)/sizeof(A[0])); vector<int> nums(A,A+len); int mostNum=findMostAppersNum(nums); cout<<mostNum<<endl; system("pause"); return 0; }
相关文章推荐
- 如何找出数组中重复次数最多的数
- java 找出n个元素数组中重复次数最多的数(假设出现次数大于n/2)
- 找出数组中重复次数最多的数
- 如何找出数组中重复次数最多的数
- 如何找出数组中重复次数最多的数
- C# 找出数组中重复次数最多的数值
- 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素
- <C#>找出数组中重复次数最多的数值
- js方式找出数组中重复数最多的那个数,并返回该数以及重复次数
- 找出一个数组中重复次数最多的数
- 找出一个数组中重复次数最多的字符暨找出Map中的最大Value及其对应的Key
- 找出数组中重复次数最多的元素并打印
- Java实现找出数组中重复次数最多的元素以及个数
- 找出数组中重复次数最多的数
- 找出数组中重复次数最多的数
- 问题8:如何找出数组中重复次数最多的数?
- 找出整型数组中重复次数最多的元素
- 练手系列(1) 找出数组中重复次数最多的元素并打印
- 求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数