最长的和为0的连续子串长度

一开始用双指针,发现没有单调性,不可以用。但是这种写法有点像双指针,暂时归到双指针。

#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;
}
原文地址:https://www.cnblogs.com/tomori/p/13547443.html