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