You are given an integer array nums and an integer k, return true if nums has a good subarray or false otherwise.
A good subarray is a subarray where:
k.Note:
x is a multiple of k if there exists an integer n such that x = n * k. 0 is always a multiple of k.Example 1:
Input: nums = [23,2,4,6,7], k = 6
Output: trueExplanation: [2,4] is a continuous subarray of size 2 whose sum is 6.
Example 2:
Input: nums = [23,2,6,4,7], k = 6
Output: trueExplanation: [23,2,6,4,7] is an continuous subarray of size 5 whose sum is 42, which is a multiple of 6..
Example 3:
Input: nums = [23,2,6,4,7], k = 13
Output: falseConstraints:
1 <= nums.length <= 1,00,0000 <= nums[i] <= 1,000,000,0000 <= sum(nums) <= ((2^31)-1)1 <= k <= ((2^31)-1)class Solution:
def checkSubarraySum(self, nums: List[int], k: int) -> bool:
for i in range(len(nums) - 1):
sum = nums[i]
for j in range(i + 1, len(nums)):
sum += nums[j]
if sum % k == 0:
return True
return Falseclass Solution:
def checkSubarraySum(self, nums: List[int], k: int) -> bool:
remainder = {0: -1} # remainder -> end index
total = 0
for i, num in enumerate(nums):
total += num
r = total % k
if r not in remainder:
remainder[r] = i
elif i - remainder[r] > 1:
return True
return FalseWhere is the size of the array and is the number that a subarray sum needs to be multiple of.