import java.util.*;
public class Main {
public static int countSubarrays(int[] arr, int k) {
Map
<Integer, Integer
> prefixSumMap
= new HashMap
<>(); int sum = 0, count = 0;
prefixSumMap.put(0, 1);
for (int num : arr) {
sum += num;
if (prefixSumMap.containsKey(sum - k)) {
count += prefixSumMap.get(sum - k);
}
prefixSumMap.put(sum, prefixSumMap.getOrDefault(sum, 0) + 1);
}
return count;
}
public static void main
(String[] args
) { int[] arr = {1, 2, 3, 4, 5};
int k = 5;
System.
out.
println("Count of subarrays with sum " + k
+ ": " + countSubarrays
(arr, k
)); }
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyBpbnQgY291bnRTdWJhcnJheXMoaW50W10gYXJyLCBpbnQgaykgewogICAgICAgIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBwcmVmaXhTdW1NYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgaW50IHN1bSA9IDAsIGNvdW50ID0gMDsKICAgICAgICAKICAgICAgICBwcmVmaXhTdW1NYXAucHV0KDAsIDEpOyAKICAgICAgICBmb3IgKGludCBudW0gOiBhcnIpIHsKICAgICAgICAgICAgc3VtICs9IG51bTsgCiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAocHJlZml4U3VtTWFwLmNvbnRhaW5zS2V5KHN1bSAtIGspKSB7CiAgICAgICAgICAgICAgICBjb3VudCArPSBwcmVmaXhTdW1NYXAuZ2V0KHN1bSAtIGspOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBwcmVmaXhTdW1NYXAucHV0KHN1bSwgcHJlZml4U3VtTWFwLmdldE9yRGVmYXVsdChzdW0sIDApICsgMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gY291bnQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludFtdIGFyciA9IHsxLCAyLCAzLCA0LCA1fTsKICAgICAgICBpbnQgayA9IDU7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb3VudCBvZiBzdWJhcnJheXMgd2l0aCBzdW0gIiArIGsgKyAiOiAiICsgY291bnRTdWJhcnJheXMoYXJyLCBrKSk7CiAgICB9Cn0K