uva11572 Unique Snowflakes [ 尺取法 ] 2020-04-02 题解 算法 阅读次数 uva11572 Unique Snowflakes 参考这里 题意:求没有重复数字的最长区间 首先向右延申 (r++),当有重复发生时,更新答案,l ++ & 删除直到重复元素,然后继续 r++ 。 12345678910111213141516171819202122const int MAX=1000000+10;int t,n,a[MAX],ans,l,r;map<int,int> cnt;int main(){ freopen("in","r",stdin); sf(t); while(t--){ sf(n); fi(i,1,n+1) sf(a[i]); ans=1,l=1,r=2; cnt.clear(); cnt[a[l]]++,cnt[a[r]]++; for (;r<=n;){ while (cnt[a[r]]>1) cnt[a[l++]]--; ans=max(ans,r>n?r-l:r-l+1); cnt[a[++r]]++; } pfn(ans); } return 0;}