fork download
  1. import java.util.*;
  2.  
  3. class Ideone {
  4. public static void main (String[] args) throws java.lang.Exception {
  5. Scanner sc = new Scanner(System.in);
  6.  
  7. int[] arr = {1, 2, 3, -3, -1, 4, 5};
  8. int n = arr.length;
  9.  
  10. int k = 5;
  11.  
  12. Map<Integer, Integer> prefixSumCount = new HashMap<>();
  13. prefixSumCount.put(0, 1);
  14.  
  15. int count = 0;
  16. int sum = 0;
  17.  
  18. for (int i = 0; i < n; i++) {
  19. sum += arr[i];
  20.  
  21. if (prefixSumCount.containsKey(sum - k)) {
  22. count += prefixSumCount.get(sum - k);
  23. }
  24.  
  25. prefixSumCount.put(sum, prefixSumCount.getOrDefault(sum, 0) + 1);
  26. }
  27.  
  28. System.out.println("Number of subarrays with sum " + k + ": " + count);
  29. }
  30. }
  31.  
Success #stdin #stdout 0.18s 58868KB
stdin
5
stdout
Number of subarrays with sum 5: 4