Contiguous Array

MediumArrayHash TablePrefix Sum

Solution

export function findMaxLength(nums: number[]): number {
  const indices = new Map<number, number>([[0, -1]]);
 
  let sum = 0;
  let answer = 0;
  nums.forEach((num, i) => {
    sum += num === 0 ? -1 : 1;
 
    const prevIndex = indices.get(sum);
    if (prevIndex !== undefined) {
      answer = Math.max(answer, i - prevIndex);
    } else {
      indices.set(sum, i);
    }
  });
  return answer;
}