Continuous Subarray Sum

MediumArrayHash TableMathPrefix Sum

Solution

export function checkSubarraySum(nums: number[], k: number): boolean {
  const n = nums.length;
  const map = new Map<number, number>([[0, -1]]);
 
  let diff = 0;
  for (let i = 0; i < n; i++) {
    diff = (diff + nums[i]) % k;
 
    const prevIndex = map.get(diff);
    if (prevIndex !== undefined) {
      if (i - prevIndex > 1) {
        return true;
      }
    } else {
      map.set(diff, i);
    }
  }
  return false;
}