问题描述:
/*
请写代码,创建一个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;
}