題目大意:
給n個數, n<=100W,求一個連續子序列,這個子序列中沒有重復的數,問這個子序列最長是多少?
典型的滑動窗口問題
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <map>using namespace std;const int maxn = 1000000 + 5;int n, g[maxn];map<int, int> v;int main(){ int cas; cin>>cas; while (cas--) { v.clear(); cin>>n; for (int i = 0; i < n; i++) cin>>g[i]; int l = 0, ans = 0; for (int r = 0; r < n; r++) { v[g[r]]++; while (v[g[r]] == 2) v[g[l++]]--; ans = max(r - l + 1, ans); } cout<<ans<<endl; } return 0;}
新聞熱點
疑難解答