799. 最长连续不重复子序列

悠悠 2023-09-29 09:43 106阅读 0赞

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

输入格式
第一行包含整数 n。

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

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

数据范围
1≤n≤105

  1. 输入样例:
  2. 5
  3. 1 2 2 3 5
  4. 输出样例:
  5. 3

使用双指针算法

  1. #include<iostream>
  2. using namespace std;
  3. const int N= 1e6+10;
  4. int n;
  5. int a[N],s[N];
  6. int main(){
  7. cin>>n;
  8. for(int i = 0; i<n ; i++) cin>>a[i];
  9. int res=0;
  10. for(int i =0, j = 0;i < n ; i++){
  11. s[a[i]]++;
  12. while(s[a[i]]>1){
  13. s[a[j]]--;
  14. j++;
  15. }
  16. res = max(res,i-j+1);
  17. }
  18. cout<<res<<endl;
  19. return 0;
  20. }

发表评论

表情:
评论列表 (有 0 条评论,106人围观)

还没有评论,来说两句吧...

相关阅读

    相关 连续重复序列

    最长连续不重复子序列 给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 n。 第二行包含 n 个整数

    相关 连续重复序列

    题目描述 给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼1

    相关 799. 连续重复序列

    给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼105 范围内)

    相关 上升连续序列

    给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。) 注...