class Solution:
def findMaxLength(self, nums: List[int]) -> int:
n, res = len(nums), 0
for i in range(n):
zeros = ones = 0
for j in range(i, n):
if nums[j] == 1:
ones += 1
else:
zeros += 1
if ones == zeros and res < (j - i + 1):
res = j - i + 1
return resclass Solution:
def findMaxLength(self, nums: List[int]) -> int:
n = len(nums)
res = 0
diff_index = [None] * (2 * n + 1)
count = 0
for i in range(n):
count += 1 if nums[i] == 1 else -1
if count == 0:
res = i + 1
if diff_index[count + n] is not None:
res = max(res, i - diff_index[count + n])
else:
diff_index[count + n] = i
return resclass Solution:
def findMaxLength(self, nums: List[int]) -> int:
zero = one = res = 0
diff_index = {}
for i, n in enumerate(nums):
if n == 0:
zero += 1
else:
one += 1
if one - zero not in diff_index:
diff_index[one - zero] = i
if one == zero:
res = one + zero
else:
idx = diff_index[one - zero]
res = max(res, i - idx)
return res