3 条题解
-
1
#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
- 上传者