leetcode 325. 和等于 k 的最长子数组长度

解题思路

方法同 leetcode 560. 和为K的子数组

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
def maxSubArrayLen(self, nums: List[int], k: int) -> int:
ret = 0
pre_sum_to_index = {0: -1}
pre_sum = 0

for i, num in enumerate(nums):
pre_sum += num
expected_val = pre_sum - k
if expected_val in pre_sum_to_index:
ret = max(ret, i - pre_sum_to_index[expected_val])
if pre_sum not in pre_sum_to_index:
pre_sum_to_index[pre_sum] = i

return ret