Maximum Size Subarray Sum Equals k

Given an arraynumsand a target valuek, find the maximum length of a subarray that sums tok. If there isn't one, return 0 instead.

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

Example 1:

Input: 
nums
 = 
[1, -1, 5, -2, 3]
, 
k
 = 
3
Output: 
4 

Explanation: 
The subarray 
[1, -1, 5, -2]
 sums to 3 and is the longest.

Example 2:

Input: 
nums
 = 
[-2, -1, 2, 1]
, 
k
 = 
1
Output: 
2 

Explanation: 
The subarray 
[-1, 2]
 sums to 1 and is the longest.

Follow Up: Can you do it in O(n) time?

分析

不用subsum数组,直接cursum+map,一遍loop,第一次遇到sum加入,后来的就算subsum == k。

注意这里subsum不含头,所以res=j-i就行,不用+1

Last updated

Was this helpful?