# LeetCode – Maximum Size Subarray Sum Equals k (Java)

Given an array nums and a target value k, find the maximum length of a subarray that sums to k. If there isn’t one, return 0 instead.

Note:
The sum of the entire nums array is guaranteed to fit within the 32-bit signed integer range.

Example 1:
Given nums = [1, -1, 5, -2, 3], k = 3,
return 4. (because the subarray [1, -1, 5, -2] sums to 3 and is the longest)

Java Solution

This problem is similar to Maximum Sum of SubArray Close to K.

```public int maxSubArrayLen(int[] nums, int k) { HashMap<Integer, Integer> map = new HashMap<>(); map.put(0, -1); int result = 0; int sum = 0;   for(int i=0; i<nums.length; i++){ sum += nums[i]; if(map.containsKey(sum - k)){ result = Math.max(result, i - map.get(sum - k)); } map.putIfAbsent(sum, i); }   return result; }```

### 4 thoughts on “LeetCode – Maximum Size Subarray Sum Equals k (Java)”

1. 2,-3,3,-1,2 is the longest.

2. This doesn’t work for {1,2,-3,3,-1,2,4} with K = 3. It should return 4 {1, 2, -3, 3} but your code will return 5.

3. No usually we say subarray it has to be contiguous

4. Should not
nums = [1, -1, 5, -2, 3], k = 3
and
nums = [1, 3, 5, -2, -1], k = 3
return the same?