您的位置:首页 > 产品设计 > UI/UE

UVa 11572 Unique snowflakes【滑动窗口】

2015-03-23 21:05 381 查看
题意:给出 n个数,找到尽量长的一个序列,使得该序列中没有重复的元素

看的紫书,滑动窗口来做的

当右端碰到有相同的数的时候,左端向前滑动一个数

模拟一个样例好理解些

#include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
#define mod=1e9+7;
using namespace std;

typedef long long LL;
const int maxn=1000000+5;
int a[maxn];

int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);

set<int> s;
int l=0,r=0,ans=0;
while(r<n){
while(r<n&&!s.count(a[r])) s.insert(a[r++]);
ans=max(ans,r-l);
s.erase(a[l++]);
}
printf("%d\n",ans);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: