/*
* @lc app=leetcode.cn id=525 lang=javascript
*
* [525] 连续数组
*/
// @lc code=start
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxLength = function (nums) {
let maxLength = 0, pre = 0;
const map = new Map();
map.set(pre, -1);
for (let i = 0; i < nums.length; i++) {
pre += nums[i] === 1 ? 1 : -1;
// 如果存在说明 prevIndex 和 i 之间的 0 和 1 的数量是相同的互相抵消了
if (map.has(pre)) {
const prevIndex = map.get(pre);
maxLength = Math.max(maxLength, i - prevIndex);
} else {
map.set(pre, i);
}
}
return maxLength;
};
// @lc code=end
console.log(findMaxLength([0, 1, 1, 1, 1, 1, 0, 0, 0]))