注意:找出數組中重複的元素,數組中也有可能不存在重複的數,也有可能存在多個
方法一:使用位圖法,再申請一個數組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;
}