class Solution {
public:
int findMaxLength(vector<int>& nums) {
int len = nums.size();
unordered_map<int,int> aux;
aux[0] = -1;
int cnt = 0;
int ans = 0;
for(int i=0;i<len;i++){
if(!nums[i])
cnt++;
else
cnt--;
if(aux.find(cnt)==aux.end())
aux[cnt] = i;
else
ans = max(ans,i-aux[cnt]);
}
return ans;
}
};
cnt 表示0与1之差,如果i与j的cnt相等,表明i+1到j的0,1个数相等。