class Solution {
    public int cntSubarrays(int[] arr, int k) {
        int n=arr.length;
        
        int[] prefixsum = new int[n];
        prefixsum[0]=arr[0];
        
        for(int i=1;i<n;i++){
            prefixsum[i]=prefixsum[i-1]+arr[i];
        }
        
        HashMap<Integer,Integer>f = new HashMap<>();
        f.put(0,1); //ye to hoga hi 
        
        int count=0;
        for(int i=0;i<n;i++){
            if(f.containsKey(prefixsum[i]-k)){
                count+=f.getOrDefault(prefixsum[i]-k,0);
            }
            
            f.put(prefixsum[i],f.getOrDefault(prefixsum[i],0)+1);
        }
        
        return count;
        
    }
}