当前位置:   article > 正文

最长连续不重复子序列(C++)题解_给定一个整数数组nums,用c++编写一个程序输出其中不含有重复元素的最长子数组的长

给定一个整数数组nums,用c++编写一个程序输出其中不含有重复元素的最长子数组的长

题干:

给定一个长度为 nn 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

输入格式:

第一行包含整数 nn。

第二行包含 nn 个整数(均在 0∼1050∼105 范围内),表示整数序列。

输出格式:

共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。

数据范围:

1≤n≤1051≤n≤105

输入样例:

  1. 5
  2. 1 2 2 3 5

输出样例:

3

 代码:

  1. # include <iostream>
  2. using namespace std;
  3. const int N = 100010;
  4. int a[N], s[N];
  5. int main()
  6. {
  7. int n, r = 0;
  8. cin >> n;
  9. for (int i = 0, j = 0; i < n; ++ i)
  10. {
  11. cin >> a[i];
  12. ++ s[a[i]];
  13. while (s[a[i]] > 1) -- s[a[j++]]; // 先减次数后右移
  14. r = max(r, i - j + 1) ;
  15. }
  16. cout << r;
  17. return 0;
  18. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/521543
推荐阅读
相关标签
  

闽ICP备14008679号