1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| class Solution { public int subarraySum(int[] nums, int k) { int sum[] = new int[nums.length+1]; sum[0]=0; int count=0; for(int i=1;i<sum.length;i++){ sum[i] = sum[i-1]+nums[i-1]; } for(int end=1;end<sum.length;end++){ for(int start=1;start<=end;start++){ if(sum[end]-sum[start-1]==k) count++; } } return count;
} }
public class Solution { public int subarraySum(int[] nums, int k) { int count = 0, pre = 0; HashMap < Integer, Integer > mp = new HashMap < > (); mp.put(0, 1); for (int i = 0; i < nums.length; i++) { pre += nums[i]; if (mp.containsKey(pre - k)) { count += mp.get(pre - k); } mp.put(pre, mp.getOrDefault(pre, 0) + 1); } return count; } }
|