找出數組中重複的元素

注意:找出數組中重複的元素,數組中也有可能不存在重複的數,也有可能存在多個

方法一:使用位圖法,再申請一個數組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;
}
發佈了97 篇原創文章 · 獲贊 440 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章