4.前缀和
知识点
例题
力扣1590:
思路解析
参考代码
class Solution:
def minSubarray(self, nums: List[int], p: int) -> int:
s = list(accumulate(nums, initial=0))
x = s[-1] % p
if x == 0: return 0 # 移除空子数组(这行可以不要)
ans = n = len(nums)
last = {}
for i, v in enumerate(s):
last[v % p] = i
j = last.get((v - x) % p, -n) # 如果不存在,-n 可以保证 i-j >= n
ans = min(ans, i - j)
return ans if ans < n else -1
Comments NOTHING