1590. Make Sum Divisible by P (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution(object):
def minSubarray(self, nums, p):
"""
:type nums: List[int]
:type p: int
:rtype: int
"""
result = n = len(nums)
for i in range(1, n):
nums[i] += nums[i - 1]
q = nums[-1] % p
if q == 0:
return 0
h = {0: -1}
for i in range(n):
mod = (nums[i] - q) % p
if mod in h:
result = min(result, i - h[mod])
mod = (mod + q) % p
h[mod] = i
return -1 if result == n else result