利用哈希表,由于数组中只有0、1,将0全都替换为 -1,则最长的 0,1 子数组就位和为 0 的最长数组长度,利用哈希表值得索引,当和 s 再次出现时,减去响应索引得到最终的值
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @return int整型
#
from collections import defaultdict
class Solution:
def findMaxLength(self , nums: List[int]) -> int:
# write code here
for i in range(len(nums)):
if nums[i] == 0:
nums[i] = -1
count = defaultdict(int)
count[0] = -1
s = max_l = 0
for i in range(len(nums)):
s += nums[i]
if s in count:
max_l = max(max_l, i - count[s])
else:
count[s] = i
return max_l