Track prefix sum remainders. Return true when same remainder appears with gap at least 2.
function checkSubarraySum(nums, k): seen = {0: -1} prefixSum = 0 for i in range(len(nums)): prefixSum += nums[i] remainder = prefixSum % k if remainder in seen: if i - seen[remainder] >= 2: return true else: seen[remainder] = i return false
time, space.