fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. // your code goes here
  13. }
  14. }
  15.  
  16.  
  17. class Solution {
  18. public int cntSubarrays(int[] arr, int k) {
  19. // HashMap to store prefix sums frequencies
  20. Map<Integer, Integer> prefixSums = new HashMap<>();
  21. int res = 0;
  22. int currSum = 0;
  23.  
  24. for (int i = 0; i < arr.length; i++) {
  25. // Add current element to sum so far.
  26. currSum += arr[i];
  27.  
  28. // If currSum is equal to desired sum
  29. // then a new subarray is found.
  30. if (currSum == k)
  31. res++;
  32.  
  33. // Check if the difference exists in the prefixSums map.
  34. if (prefixSums.containsKey(currSum - k))
  35. res += prefixSums.get(currSum - k);
  36.  
  37. // Add currSum to the set of prefix sums.
  38. prefixSums.put(currSum, prefixSums.getOrDefault(currSum, 0) + 1);
  39. }
  40.  
  41. return res;
  42. }
  43. }
Success #stdin #stdout 0.09s 54700KB
stdin
Standard input is empty
stdout
Standard output is empty