计算向量中没有重复的连续元素的最大数量。(Calculate the maximum number of consecutive elements without repetitions in a vector. c++)
嗨伙计们,我要计算最长的数字序列而不重复,并返回子段的大小。
关键是我在某些方面遗漏了一些东西,但我不知道在哪里。
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所以基本上我正在寻找一些不适合我的代码的序列。
谢谢。
Hi guys i've to calculate the longest sequence of numbers without any repetitions and return the size of the sub-segment.
The point is that im missing something at some point but I don't know where.
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; }I've tried the following cases with this outputs and everything seems to be ok.
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:1So basically im looking for some sequence that doesn't work with my code.
Thanks.
最满意答案
问题在于
else { a.erase(var); a[var] = i; }你需要在这里做更多。 尝试序列1 3 4 2 3 4 2 8 9 10 11 。
The problem is with
else { a.erase(var); a[var] = i; }You need to do more here. Try the sequence 1 3 4 2 3 4 2 8 9 10 11.
更多推荐
发布评论