Description
给定二进制数组
Constraints
Solution
用表记录一下前缀和即可
前缀和指的是
每个相同的前缀和只取第一次,作差就能得到当前最长的情况
Code
class Solution {
public:
int findMaxLength(vector<int>& nums) {
// {presum, index}
std::unordered_map<int, int> rec;
int len = 0, sum = 0;
rec[0] = -1; // Note
for(int i = 0; i < nums.size(); ++i) {
int v = nums[i];
sum += (v ? 1 : -1);
if(rec.count(sum)) len = std::max(len, i - rec[sum]);
else rec[sum] = i;
}
return len;
}
};