Skip to content

Commit 6c8cae5

Browse files
committed
feat: 1590. Make Sum Divisible by P, hash+前缀和
1 parent a3b818c commit 6c8cae5

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} p
4+
* @return {number}
5+
*/
6+
var minSubarray = function(nums, p) {
7+
// mp[余数] = 最往后的 index
8+
// 由于元素最多 10^5,最多有 10^5 种余数
9+
let mp = {}, n = nums.length, r = 0, ans = 1e10
10+
mp[0] = -1
11+
let sr = nums.reduce((prev, cur) => (prev+cur)%p, 0)
12+
if (sr === 0) return 0
13+
for (let i = 0; i < n; i++) {
14+
r = (r + nums[i]) % p
15+
// 区间的余数必须是 sr,和整体总余数相同,因此起点余数是 dr
16+
let dr = (r - sr + p) % p
17+
if (mp[dr] != null) {
18+
ans = Math.min(ans, i - mp[dr])
19+
}
20+
mp[r] = i
21+
}
22+
return ans >= n ? -1 : ans
23+
};

0 commit comments

Comments
 (0)