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