3 条题解

  • 1
    @ 2025-9-4 20:31:44
    #include <iostream>
    #include <unordered_map>
    #include <vector>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        vector<int> a(n);
        for (int i = 0; i < n; ++i) {
            cin >> a[i];
            a[i] = a[i] == 0 ? -1 : 1;  // 将0和1转换为-1和1
        }
        
        unordered_map<int, int> sum_pos;
        int sum = 0;
        int max_len = 0;
        
        for (int i = 0; i < n; ++i) {
            sum += a[i];
            if (sum == 0) {
                max_len = i + 1;  // 从开头到当前位置满足条件
            }
            if (sum_pos.find(sum) != sum_pos.end()) {
                max_len = max(max_len, i - sum_pos[sum]);
            } else {
                sum_pos[sum] = i;
            }
        }
        
        cout << max_len << endl;
        return 0;
    }
    

    信息

    ID
    1281
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    200
    已通过
    37
    上传者