Untitled
unknown
plain_text
a month ago
893 B
1
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