Q29 Subarray Sum Equals K - LeetCode

PHOTO EMBED

Thu Jan 26 2023 19:19:50 GMT+0000 (Coordinated Universal Time)

Saved by @Ayush_dabas07

class Solution {
    public int subarraySum(int[] nums, int k) {
        //make prefix sum array and keep storing in HashMap
        //if at any moment (sum - k) exist in the array then the difference between 
        //sum & (sum - k) will be equal to k and that subarray will be equal to k 

        HashMap<Integer,Integer> map = new HashMap<>();
        
        int psa = 0 ,count = 0; //count is our answer , psa = prefix sum array
        map.put(0,1);           // adding 0 when pointer is at -1 index

        for(int i =0 ;i < nums.length ; i++){
            int val = nums[i];

            psa += val;

            if(map.containsKey(psa - k) ){
                count += map.get(psa-k);
            }

            map.put(psa , map.getOrDefault(psa,0)+1);
        }

        return count;
    }
}
content_copyCOPY

https://leetcode.com/problems/subarray-sum-equals-k/