O(n^2)
class Solution {
public static int subarraySum(int[] nums, int k) {
int sumi = 0;
int sumj;
int ans = 0;
for (int i = 0; i < nums.length; ) {
sumi = sumi + nums[i];
i++;
sumj = 0;
for (int j = 0; j < i; j++) {
if (sumi - sumj == k){
ans++;
}
sumj = sumj + nums[j];
}
}
return ans;
}
}
O(n)
class Solution {
public static int subarraySum(int[] nums, int k) {
int sum = 0;
int ans = 0;
HashMap<Integer,Integer> map = new HashMap<>();
map.put(0,1);
for (int i = 0; i < nums.length; i++) {
sum = sum + nums[i];
if (map.containsKey(sum - k)){
ans = ans + map.get(sum - k);
}
map.put(sum ,map.getOrDefault(sum,0) + 1);
}
return ans;
}
}