题解 | #和为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
            

全部评论

相关推荐

数学转码崽:一直给我推,投了又不理,理了又秒挂
点赞 评论 收藏
分享
01-29 16:08
已编辑
华南农业大学 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务