leetcode-和等于k的最长连续子数组长度

和和等于k的最长连续子数组长度

给你一个整数数组 nums 和整数 k,求:

和等于 k 的最长连续子数组长度

如果不存在返回 0。

示例
nums = [1,-1,5,-2,3]
k = 3

答案:4

因为:

[1,-1,5,-2] = 3

长度:4

这个题和之前的题一样,都是计算长度的,所以我们依旧使用前缀和和字典,只不过字典初始设置的值依旧应该是{0:-1}因为我们要记录长度,为0的时候的索引应该是-1

1
2
3
4
5
6
7
8
9
10
11
12
13
def maxSubArrayLen(nums, k) -> int:
max_len = 0
index = {0 : -1}
prefix = 0
for i, num in enumerate(nums):
prefix += num
if (prefix - num) in index:
max_len = max(max_len, i - index[prefix - num])

# 我们需要保存 prefix 最早出现的位置
if prefix not in index:
index[prefix] = i
return max_len

leetcode-和等于k的最长连续子数组长度
https://vegetablest.github.io/2026/03/10/leetcode-和等于k的最长连续子数组长度/
作者
af su
发布于
2026年3月10日
许可协议