class Solution { public int minSubarray(int[] nums, int p) { int mod = 0; for (int num : nums) { mod = (mod + num) % p; } if (mod == 0) { return 0; } int ans = Integer.MAX_VALUE; Map<Integer, Integer> map = new HashMap<>(); map.put(0, -1); for (int i = 0, sum = 0; i < nums.length; i++) { sum = (sum + nums) % p; int find = (sum - mod + p) % p; if (map.containsKey(find)) { ans = Math.min(ans, i - map.get(find)); } map.put(sum, i); } return ans == Integer.MAX_VALUE || ans == nums.length ? -1 : ans; }}