fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. public static int countSubarraysOptimized(int[] arr, int k) {
  5. Map<Integer, Integer> prefixSumCount = new HashMap<>();
  6. int count = 0;
  7.  
  8. prefixSumCount.put(0, 1);
  9. int temp = arr[0];
  10. for(int i = 0; i<arr.length; i++){
  11. temp +=arr[i];
  12. prefixSumCount.put(temp, prefixSumCount.getOrDefault(temp, 0) + 1);
  13. }
  14.  
  15. for (int key : prefixSumCount.keySet()) {
  16. if (prefixSumCount.containsKey(key - k)) {
  17. count += prefixSumCount.get(key - k);
  18. }
  19. }
  20.  
  21. return count;
  22. }
  23.  
  24. public static void main(String[] args) {
  25. int[] arr = {1, 2, 3, 4, 5};
  26. int k = 5;
  27. System.out.println("Number of subarrays with sum " + k + ": " + countSubarraysOptimized(arr, k));
  28. }
  29. }
  30.  
Success #stdin #stdout 0.12s 57560KB
stdin
Standard input is empty
stdout
Number of subarrays with sum 5: 2