计算向量中不重复的连续元素的最大数量。 C++
Calculate the maximum number of consecutive elements without repetitions in a vector. c++
大家好,我要计算没有任何重复的最长数字序列和 return 子段的大小。
关键是我在某个时候遗漏了一些东西,但我不知道在哪里。
int resolverCaso() {
int num;
int cont = 0;
cin >> num;
int var;
TreeMap<int,int> a;
int aux;
int max = 0;
for (int i = 0; i < num; i++) {
cin >> var;
if (!a.contains(var)) {
a[var] = i;
aux = var;
cont++;
}
else {
if (a[aux]==i-1 && var==aux) {
cont = 1;
a = TreeMap<int, int>();
a[var] = i;
}
else {
a.erase(var);
a[var] = i;
}
}
if (cont > max) {
max = cont;
}
}
return max;
}
我用这个输出尝试了以下情况,一切似乎都正常。
E:1 2 3 1 2 3 O:3
E:2 2 2 2 O:1
E:4 5 6 7 6 O:4
E:7 8 9 10 7 8 9 11 2 O:6
E:7 8 9 10 10 10 1 2 3 4 O:5
E:3 4 2 3 4 2 8 9 10 11 O:7
E:0 O:0 ( empty vector ).
E:1 O:1
所以基本上我在寻找一些不适用于我的代码的序列。
谢谢。
问题在于
else {
a.erase(var);
a[var] = i;
}
你需要在这里做更多的事情。尝试序列 1 3 4 2 3 4 2 8 9 10 11
.
大家好,我要计算没有任何重复的最长数字序列和 return 子段的大小。
关键是我在某个时候遗漏了一些东西,但我不知道在哪里。
int resolverCaso() {
int num;
int cont = 0;
cin >> num;
int var;
TreeMap<int,int> a;
int aux;
int max = 0;
for (int i = 0; i < num; i++) {
cin >> var;
if (!a.contains(var)) {
a[var] = i;
aux = var;
cont++;
}
else {
if (a[aux]==i-1 && var==aux) {
cont = 1;
a = TreeMap<int, int>();
a[var] = i;
}
else {
a.erase(var);
a[var] = i;
}
}
if (cont > max) {
max = cont;
}
}
return max;
}
我用这个输出尝试了以下情况,一切似乎都正常。
E:1 2 3 1 2 3 O:3
E:2 2 2 2 O:1
E:4 5 6 7 6 O:4
E:7 8 9 10 7 8 9 11 2 O:6
E:7 8 9 10 10 10 1 2 3 4 O:5
E:3 4 2 3 4 2 8 9 10 11 O:7
E:0 O:0 ( empty vector ).
E:1 O:1
所以基本上我在寻找一些不适用于我的代码的序列。
谢谢。
问题在于
else {
a.erase(var);
a[var] = i;
}
你需要在这里做更多的事情。尝试序列 1 3 4 2 3 4 2 8 9 10 11
.