题解 | #和为K的连续子数组#
和为K的连续子数组
https://www.nowcoder.com/practice/704c8388a82e42e58b7f5751ec943a11
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# max length of the subarray sum = k
# @param arr int整型一维数组 the array
# @param k int整型 target
# @return int整型
#
class Solution:
def maxlenEqualK(self , arr: List[int], k: int) -> int:
# write code here
n = len(arr)
ans = 1
pre = [arr[0] for _ in range(n)]
for i in range(1, n):
pre[i] = pre[i-1] + arr[i]
if pre[i] == k:
ans = max(ans, i+1)
# if ans > 1: return ans
dic = {}
for i in range(n):
if pre[i] not in dic.keys():
dic[pre[i]] = i
residual = pre[i] - k
if residual in dic.keys():
j = dic[residual]
ans = max(ans, i-j)
# print(pre)
return ans

