第52天(中等题 数据结构)
打卡第五十二天
2道中等题

题目:

思路:前缀和+哈希表

代码:
int findMaxLength(vector<int>& nums) {
unordered_map<int, int> pos = {{0, -1}}; // 初始前缀和为0,索引为-1(从0开始计算子数组)
int ans = 0, s = 0;
for (int i = 0; i < nums.size(); i++) {
s += nums[i] ? 1 : -1; // 0 变成 -1,1 变成 +1
if (pos.contains(s)) { // 如果之前出现过这个前缀和
ans = max(ans, i - pos[s]); // 当前索引减去第一次出现的索引,得到子数组长度
} else {
pos[s] = i; // 第一次出现这个前缀和的位置
}
}
return ans;
}
耗时≈一小时 明天继续

浙公网安备 33010602011771号