uva 11572 ——Unique Snowflakes

来源:互联网 发布:2016gdp 知乎 编辑:程序博客网 时间:2024/05/22 14:11

题意:给定一个序列,然后在这个序列找到一个连续的串,使得串中没有重复的元素。


思路:单调队列。每次都把该在序列没出现的数加入到序列中,然后向后扫描找到最大的ans。


code:

//#incllude <bits/stdc++.h>//#include<bits/stdc++.h>#include <cstdio>#include <set>using namespace std;const int N=1000005;int v[N];int main(){int T,n;scanf("%d",&T);while (T--){scanf("%d",&n);for (int i=0;i<n;i++) scanf("%d",&v[i]);set<int>s;int l=0,r=0,ans=0;while(l<n){while (r<n&&!s.count(v[r])) s.insert(v[r++]);ans=max(ans,r-l);s.erase(v[l++]);}printf("%d\n",ans);}}


0 0
原创粉丝点击