classSolution{public:intfindMaxLength(vector<int>& nums){int n = nums.size();if(n==1)return0;
unordered_map<int,int>memo;
memo[0]=-1;int sum =0;int res =0;for(int i=0;i<n;i++){
sum += nums[i]==0?-1:1;//至于用find还是count其实都差不多,两者查找的效率都是一样的,但是find可以得到查找到的那个值键对的迭代器,而不用想count那样还需要通过[]来访问值,而find可以直接利用迭代器得到值。也可直接auto关键字自动补充类型,但是不支持C++11就没法了
unordered_map<int,int>::iterator t = memo.find(sum);if(t!=memo.end()){
res =max(res,i-t->second);}else{
memo[sum]= i;}}return res;}};