Make Sum Divisible by P LeetCode solution in C++

1
class Solution {
2
public:
3
int minSubarray(vector<int> &nums, int p) {
4
int n = nums.size();
5
int sm = 0;
6
int ans = INT_MAX, cur = INT_MAX;
7
for (int it : nums) sm = (sm + it) % p;
8
if (sm == 0) return 0;
9
unordered_map<long long, int> mp = {{0, -1}};
10
long long pre = 0;
11
for (int i = 0; i < n; i++) {
12
pre = (pre + nums[i]) % p;
13
mp[pre] = i;
14
if (mp.count((pre - sm + p) % p) > 0) cur = i - mp[(pre - sm + p) % p];
15
ans = min(ans, cur);
16
}
17
if (ans == INT_MAX || ans == n)
18
return -1;
19
else
20
return ans;
21
}
22
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0