Unique Snowflakes uva11572

发布时间 2023-04-16 22:55:54作者: towboat

找最长的,没有相同元素的区间

 

双指针

#include <iostream>
#include <set>
using namespace std;
 const int N=1e6+2;
  int n,a[N];
  
  void solve(){
  	int x=1,y=1,ans=0;
  	set<int> st;
  	
  	while(y<=n){
  		while(y<=n&&!st.count(a[y])) st.insert(a[y]),y++;
  		ans=max(ans,y-x);
  		
  		st.erase(a[x]),x++;
	  }
	cout<<ans<<endl;
  }
 signed main(){
 	int cas;
 	cin>>cas;
 	while(cas--){
 	cin>>n;
 	for(int i=1;i<=n;i++) cin>>a[i];
 	solve();
 	}
 }