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