计算一个向量中不重复的连续元素的最大数目.c++
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
所以基本上我在寻找一些序列,不与我的代码工作。
谢谢。
问题在于
else {
a.erase(var);
a[var] = i;
}
你需要做更多的事情。试试序列1 3 4 2 3 4 2 8 9 10 11
相关文章:
- 我应该如何表示我拥有的连续元素序列?
- 如何将 n 个连续元素插入到元素类型不可复制的 std::vector 中?
- 是否存在一个范围::视图::group_by对应项,它将所有元素都考虑在内,而不是只考虑连续的元素
- 结构化绑定,无需复制即可获取子向量的连续元素
- 确定数组是否可以旋转 3 个连续的数组元素进行排序?
- C++指向连续矢量元素的指针是矛盾的
- 如何比较C 列表中的两个连续元素
- 将解决方案打印为数组中非连续元素的最大总和
- AVX2 根据条件将连续元素扩展到稀疏向量?(如AVX512 VP扩展)
- 是否有任何方法可以比较C 中的STD ::的两个连续元素
- 如何在c++中增加向量中k个连续元素的值
- C++用于将函数应用于连续元素的算法
- 阵列中连续元素的总和C
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- 如何在for循环中同时使用deque的两个连续元素
- 使用迭代器比较 Vector 中的连续元素
- 在 N 个元素的数组中求出"P"元素的最小和,以便一起选择不超过"k"个连续元素
- 计算(列表中)连续元素的最大和
- 计算一个向量中不重复的连续元素的最大数目.c++
- 如何生成不会产生超过 X 个连续元素的随机数序列