本题是求最长子数组长度,由于数组中的值可正可负,双指针方法不可行,可利用哈希表的方式对连续数组的和进行记录,当再次出现该值时,当前索引减去该值之前的索引即为子数组的长度
代码:

class Solution:
    def maxlenEqualK(self , arr , k ):
        # write code here
        count = dict()
        count[0] = -1
        s, max_l = 0, 0
        for i, a in enumerate(arr):
            s += a
            if s not in count:
                count[s] = i
            if s - k in count:
                max_l = max(max_l, i - count[s - k])
        return max_l