题目如下
不能通过全部样例的一种方法
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<int, int> record;
for (int i = 0; i < 10; ++i) {
int num;
cin >> num;
record[num]++;
if (record[num] == 2) {
cout << num << " ";
}
}
return 0;
}
可以通过全部样例的一种方法
#include <iostream>
#include <unordered_map>
#include <vector>
#include <set>
using namespace std;
int main() {
unordered_map<int, int> record;
vector<int> inputOrder;
set<int> repeatedElements;
for (int i = 0; i < 10; ++i) {
int num;
cin >> num;
inputOrder.push_back(num);
record[num]++;
if (record[num] == 2) {
repeatedElements.insert(num); // 只有第一次发现重复的时候才加入重复元素集合
}
}
for (int num : inputOrder) {
if (repeatedElements.count(num) > 0) {
cout << num << " ";
repeatedElements.erase(num); // 输出后从重复元素集合中移除,确保每个重复元素只输出一次
}
}
return 0;
}
错误原因:题目未说清楚或未读懂题目,举例的题目要求按照元素出现的位次优先输出而不是出现重复元素的位次优先进行输出