zoukankan      html  css  js  c++  java
  • 双指针算法_最长连续不重复子列长度

    给定一个长度为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;
    }
     
  • 相关阅读:
    java中断
    guava cache使用和源码分析
    redis基本类型和使用
    LRU Cache java实现
    HTTP长连接、短连接使用及测试
    mac下redis安装、设置、启动停止
    一次SocketException:Connection reset 异常排查
    【swift 结构体】
    【swift array 数组】
    【iOS知识汇】NSNotification
  • 原文地址:https://www.cnblogs.com/WAsbry/p/13585122.html
Copyright © 2011-2022 走看看