一开始用双指针,发现没有单调性,不可以用。但是这种写法有点像双指针,暂时归到双指针。
#include<iostream>
#include<map>
using namespace std;
const int N = 1010;
int a[N];
int n;
map<int, int> st;
int main(){
cin >> n;
for(int i = 1; i <= n; i ++){
cin >> a[i];
a[i] += a[i - 1];
}
int res = 0;
for(int i = 0; i <= n; i ++){
if(st.count(a[i]) == 0) st[a[i]] = i + 1;
else res = max(res, i - st[a[i]] + 1);
}
cout << res << endl;
return 0;
}