您的位置:首页 > 其它

找出数组中重复次数最多的元素

2017-01-07 18:09 197 查看
思路:

最简单的方法就是定义一个数组b把相同的元素放到对应位置,如果数组a的元素等于这个下标,那么这个下标对应的值就加1,最后找出这个数组中最大值返回下标,这个方法浪费很大空间,不推荐。

新的思路:采用map,定义一个map,初始值默认为0,循环遍历数组a,把map中key值是a中此时元素的value加1,初始定义一个val假设map[val]最大,最后每次遍历都和这个值比较,如果大于这个值,那么val就重新复制为a[i],具体实现为:

#include<iostream>
#include<map>
using namespace std;

int getMax(int *a,int len,int val);

int main()
{
int b[]={1,5,4,3,4,4,5,4,5,5,6};
cout<<getMax(b,11,0);
}

int getMax(int *a,int len,int val)
{
if(len==0)
{
cout<<"长度为0不合法"<<endl;
return -1;
}
map<int,int> m;
for(int i=0;i<len;i++)
{
m[a[i]]++;
if(m[a[i]]>=m[val])
val=a[i];
}
return val;
}


最后输出:5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法-数组