523. Continuous Subarray Sum
solution
class Solution:
def checkSubarraySum(self, nums: List[int], k: int) -> bool:
if len(nums) < 2:
return False
prefix_sum = 0
mydict = {0: -1} # 注意包含第一个元素的序列, 如果第一个元素到中间元素可以被整除, [13, 2], 3
# 同时题目要求至少2个元素, 如果是前两个的和,也就是需要一个-1
for i, num in enumerate(nums):
prefix_sum += num
# 如果两个数除k都余同一个a,那么二者之差可以整除k
remainder = prefix_sum % k
if remainder not in mydict: # 先判断不在, 记录每个元素记录最早的index
mydict[remainder] = i
if i - mydict[remainder] >= 2: # 题目要求至少2个元素和
return True
return Falsefollow up
Last updated