注意:找出数组中重复的元素,数组中也有可能不存在重复的数,也有可能存在多个
方法一:使用位图法,再申请一个数组b,用b[a[i]]存储a[i]的重复次数:
方法二:使用map映射表。map是一个容器。第一个元素为关键字KEY,第二个元素为关键字的值。
这里是map的基本用法
#include <iostream>
#include <map>
using namespace std;
bool findMostFrequentInArray(int *a, int size, int &val)
{
if (a == NULL || size <= 0)
return false;
map<int, int> m;
map <int, int>::iterator p;//定义指针p
for (int i = 0; i < size; i++)
{
//举例:map<string, int> m; m[“haha”]=5等价于m.insert(pair<"haha",5>); m[i]的值表示数字i出现的次数。
m[a[i]]++;
if (m[a[i]] >= m[val])
{
val = a[i];
}
}
for ( p= m.begin( ); p!= m.end( ); p++ )//遍历map
{
if(p->second>=2)
{
cout<<p->first<<endl;
}
}
return true;
}
int main()
{
int val = 0 ;
int a[] = { 1, 5, 4, 3, 4, 4, 5, 4, 5, 5, 6,3,2,2,6,77,7,7,8,9,99,8,11,11};
findMostFrequentInArray(a, sizeof(a)/sizeof(a[0]), val);
return 0;
}