Исправить код на C++ Уникальные элементы
Дан массив. Распечатайте только те значения элементов массива, которые встречаются в нем ровно один раз. Элементы следует распечатывать в том порядке, в котором они встречаются в массиве. Создавать новые массивы нельзя.
Входные данные
В первой строке входных данных содержится натуральное число n (n≤100) — количество элементов массива. В следующей строке содержится n натуральных чисел, не превосходящих 30000 — элементы массива.
Выходные данные
Выведите ответ на задачу.
Есть код который удаляет повторяющиеся числа:
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;
vector v(n);
for (int i = 0; i < n; ++i){
cin >> v[i];
}
for (int i = 0; i < n; ++i){
bool flag = false;
for (int j = 0; j < i; ++j){
if (v[i] == v[j]){
flag = true;
}
}
if (!flag){
cout << v[i] << " ";
}
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <vector>
using namespace std;
int main () {
int n, numMin = 0, p = 0;
cin >> n;
vector <int> num(n);
for (int i = 0; i < n; i++)
cin >> num[i];
for (int i = 0; i < n; i++) {
int rav = 0;
for (int i = p; i < n; i++) {
if (num[numMin] == num[i]) {
rav++;
}
}
if (rav == 1) {
cout << num[numMin] << " ";
}
numMin++;
p++;
}
return 0;
}
На вход получаю:
5
1 3 3 3 2
На выход получаю:
1 3 2 (вместо 1 2)
1
Объяснение: