• 双指针算法_最长连续不重复子列长度


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

    输入格式

    第一行包含整数n。

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

    输出格式

    共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。

    数据范围

    1n1000001≤n≤100000

    输入样例:

    5
    1 2 2 3 5
    

    输出样例:

    3
    
     
    ijij
    1
    j s[j]--j
     
    #include <iostream>//
     
    using namespace std;//
     
    const int N = 100010;//
     
    int n;
    int q[N], s[N];//q,s[i]以q[i]
     
    int main()
    {
      scanf("%d", &n);
      for (int i = 0; i < n; i ++ ) scanf("%d", &q[i]);//
     
      int res = 0;
      for (int i = 0, j = 0; i < n; i ++ )
      {
      s[q[i]] ++ ;//放q[i]
      while (j < i && s[q[i]] > 1) s[q[j ++ ]] -- ;//
      res = max(res, i - j + 1);
    }
     
      cout << res << endl;
     
      return 0;
    }
     
  • 相关阅读:
    事件循环(Event Loop)promise、setTimeout、async的先后执行顺序
    计算机网络方面
    深拷贝与浅拷贝
    从输入url到页面加载发生了什么?
    手写jQuery插件
    vue与微信小程序的区别
    Webpack打包工具
    SpringCloud Feign的分析
    SpringCloud Ribbon的分析(二)
    SpringCloud Ribbon的分析
  • 原文地址:https://www.cnblogs.com/WAsbry/p/13585122.html
Copyright © 2020-2023  润新知