给定长度为N的序列,求最长的连续序列,这个序列中的数是不重复的。
思路:TwoPoint,r维护加入,l维护减除,因为数字较大,需要用map来做离散化。
const int maxn = 1000005; map<int, int> mp; int a[maxn]; int n; int main() { //freopen("in.txt","r",stdin); //frepoen("out.txt","w",stdout); int t; cin >> t; while(t--) { cin >> n; for (int i = 0;i < n;++i) scanf("%d",&a[i]); int l = 0, ans = 0; mp.clear(); for (int r = 0;r < n;++r) { mp[a[r]]++; while(mp[a[r]] == 2) mp[a[l++]]--; ans = max(ans, r - l + 1); } printf("%d\n", ans); } return 0; }