wa双指针求调
查看原帖
wa双指针求调
1021623
AVLw楼主2023/10/22 19:54

自己又调不明白 怎么改 问题在哪里

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <cmath>
#include<map>
using namespace std;
const int N = 1e6+10;
typedef long long LL;
int a[N];
map<int, int>mp;

int main() {
    int t; int num = 0;
    scanf("%d", &t);
    for (int i = 0; i < t; i++) {
        mp.clear(); int ans = 0;
        int n; scanf("%d", &n);
        for (int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
      
        for (int l = 0, r = 0; l<=r&&r<n; ) {
            //如果没有重复元素 r右移
            if (!mp.count(a[r]) ) {
                mp[a[r]]++;
                ans = max(ans, r - l+1);
                r++;
            }
            //如果有重复元素 l右移寻找下一个区间
            else {
                mp[a[l]]--;
                l++;
            }
        }
        printf("%d\n", ans);
    }


    return 0;
}

2023/10/22 19:54
加载中...