Top/k值查找重复数据

问题描述:

/*
    请写代码,创建一个vector<int> vec,随机100个整数
    ,整数的取值范围是[1, 1000000],以系统时间作为种子,

    请快速统计该组数据当中,有哪些数字重复了,统计重复的次数,
    打印出来,打印格式    

    数字  =》 重复的次数
    数字  =》 重复的次数
    数字  =》 重复的次数
    数字  =》 重复的次数
    数字  =》 重复的次数
    数字  =》 重复的次数
    */

解题思路:外层遍历 vector, 取vector当前元素,在map表中查询
       如果该key存在,key-》value ++
       如果key不存在,[key, 1]插入到map表当中

    遍历map表,看谁的value值>1 表示重复的,打印

数值太多,我缩小了范围。

    
int main()
{
     vector<int> vec;
	 unordered_map<int, int> Map;
	 srand(time(NULL));
	 for (int k = 0; k < 100; ++k)
	 {
		 vec.push_back(rand() % 1000 + 1);
	 }
	 vector<int>::iterator it = vec.begin();
	 unordered_map<int, int>::iterator mapit;
	 for (; it != vec.end(); ++it)
	 {
		 mapit = Map.find(*it);
		 if (mapit == Map.end())
		 {
			 Map[*it]++;
		 }
		 else
		 {
			 mapit->second += 1;
		 }

	 }
	 mapit = Map.begin();
	 for (; mapit != Map.end(); ++mapit)
	 {
		 if (mapit->second > 1)
		 {
			 cout << "数字:" << mapit->first << "重复的次数:  " << mapit->second << endl;;
		 }
		
	 }
	 cout << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值