连续数组
连续数组
- 前缀和+哈希
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxLength = function(nums) {
let cnt = 0 , mx = 0;
let mp = new Map();
nums.forEach((d,i)=>{
cnt += (d===1);
cnt -= (d===0);
if(cnt === 0) mx = Math.max(i+1,mx);
if(mp.has(cnt)) {
let tmp = mp.get(cnt);
mx = Math.max(i-tmp,mx);
}
else mp.set(cnt,i);
})
return mx ;
};
PS:感觉貌似一般求连续XX的时候,通常会用到前缀和的方式。。之后为了避免tle,可能会用到哈希表之类的数据结构+题目的各种特性 来进行优化。。然鹅这道题对cnt的处理倒是让我想到了那个"投票算法"。。贴个链接