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