1590. Make Sum Divisible by P
Read the full problem statement on LeetCode.
Difficulty: medium Acceptance: 39% Topics: Array, Hash Table, Prefix Sum
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
# Time: O(n)
# Space: O(p)
class Solution(object):
def minSubarray(self, nums, p):
"""
:type nums: List[int]
:type p: int
:rtype: int
"""
residue = sum(nums) % p
if not residue:
return 0
result = len(nums)
curr, lookup = 0, {0: -1}
for i, num in enumerate(nums):
curr = (curr+num) % p
lookup[curr] = i
if (curr-residue) % p in lookup:
result = min(result, i-lookup[(curr-residue)%p])
return result if result < len(nums) else -1
Solution from kamyu104/LeetCode-Solutions · MIT