Skip to content
Go back

1590-make-sum-divisible-by-p

1590 https://leetcode.cn/problems/make-sum-divisible-by-p/

package main

func minSubarray(nums []int, p int) int {
	sum := 0

	buf := []int{}
	for _, v := range nums {
		sum += v
		sum %= p
		buf = append(buf, sum)
	}

	if sum == 0 {
		return 0
	}

	ret := len(nums)

	idxs := map[int]int{}
	idxs[0] = -1

	for i := range nums {
		offset := (buf[i] - sum + p) % p
		v, ok := idxs[offset]
		if ok && ret > i-v {
			ret = i - v
		}
		idxs[buf[i]] = i
	}

	if ret == len(nums) {
		return -1
	}
	return ret
}

Share this post on:

Previous Post
2574-left-and-right-sum-differences
Next Post
interview1705-find-longest-subarray-lcci