Untitled
unknown
plain_text
a year ago
893 B
5
Indexable
public int minSubarray(int[] nums, int p) {
long totalSum = 0;
for (int num : nums) {
totalSum += num;
}
int remainder = (int) (totalSum % p);
if (remainder == 0) return 0; // No need to remove any subarray
HashMap<Integer, Integer> map = new HashMap<>();
map.put(0, 0); // Base case for prefix sum
int prefixSum = 0;
int minLength = nums.length;
for (int i = 0; i < nums.length; i++) {
prefixSum = (prefixSum + nums[i]) % p;
int target = (prefixSum - remainder + p) % p;
if (map.containsKey(target)) {
minLength = Math.min(minLength, i + 1 - map.get(target));
}
map.put(prefixSum, i + 1);
}
return minLength == nums.length ? -1 : minLength;
}Editor is loading...
Leave a Comment