题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个整数数组和整数 K,求其中是否存在长度至少为二且数值和为 K 的倍数的子数组。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def checkSubarraySum(self, nums: List[int], k: int) -> bool:
index_rec = defaultdict(int)
index_rec[0] = -1 # 这样子只要在下标一及以后的位置出现能整除 k 的就能记录
total = 0

for i, x in enumerate(nums):
total += x
mod_index = total % k
# print(index)
if mod_index in index_rec:
if i - index_rec[mod_index] > 1:
return True
else:
index_rec[mod_index] = i

return False