- 连续数组
给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。
class Solution {
public:
int findMaxLength(vector<int>& nums) {
int n = nums.size();
unordered_map<int , int>mp;
int maxl = 0;
mp[0] = -1;
int count = 0;
for(int i = 0; i < n; i++){
if(nums[i] == 0)
count--;
else
count++;
if(mp.count(count)){
int pre = mp[count];
maxl = max(maxl, i - pre);
}else{
mp[count] = i;
}
}
return maxl;
}
};
经验:
1、尝试了两种循环,都失败了,时间卡的挺紧的。
2、第一次用c++里的hashmap,声明变量的方法是unordered_map<int , int>mp,查找键的方法是mp.count()