n = len(nums)
pos, neg = [0] * n, [0] * n #有一个专门存储位置
if nums[0] > 0: pos[0] = 1
elif nums[0] < 0: neg[0] = 1
ans = pos[0]
for i in range(1, n):
if nums[i] > 0:
pos[i] = 1 + pos[i-1]
neg[i] = 1 + neg[i-1] if neg[i-1] > 0 else 0
elif nums[i] < 0:
pos[i] = 1 + neg[i-1] if neg[i-1] > 0 else 0
neg[i] = 1 + pos[i-1]
ans = max(ans, pos[i])
return ans
参考大佬的解法
存储正数;负数的长度dp
遇见不一样的长度更新为0