找出数组中重复的元素

注意:找出数组中重复的元素,数组中也有可能不存在重复的数,也有可能存在多个

方法一:使用位图法,再申请一个数组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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值