Maximum Size Subarray Sum Equals k - Teeeeeebag/LeetCode GitHub Wiki

public class Solution {
    public int maxSubArrayLen(int[] nums, int k) {
        if(nums.length == 0){
            return 0;
        }
        int[] sums = new int[nums.length];
        sums[0] = nums[0];
        for (int i=1; i<nums.length; ++i){
            sums[i] = sums[i-1] + nums[i];
        }
        int maxLen = 0;
        HashMap<Integer, Integer> hm = new HashMap<>();
        hm.put(0, -1);
        for (int i=0; i<sums.length; ++i){
            if(hm.containsKey(sums[i]-k)){
                maxLen = Math.max(maxLen, i-hm.get(sums[i]-k));
            }
            if (!hm.containsKey(sums[i])) {
                hm.put(sums[i], i);
            }
        }
        return maxLen;
    }
}