python3题解 | #乘积为正数的最长连续子数组#

乘积为正数的最长连续子数组

https://www.nowcoder.com/practice/0112b9b5a09048d89309f55ea666db91

import sys

# # for line in sys.stdin:
# #     a = line.split()
# #     print(int(a[0]) + int(a[1]))
# n = int(input())
# nums = list(map(int,input().split()))
# z = [0]*n
# f = [0]*n
# z[0] = 1 if nums[0]>0 else 0
# f[0] = 1 if nums[0]<0 else 0
# res = 0
# for i in range(1,n):
#     if nums[i]>0:
#         z[i] = z[i-1] +1
#         f[i] = f[i-1] +1 if f[i-1]>0 else 0
#     elif nums[i]<0:
#         z[i] = f[i-1] +1 if f[i-1] >0 else 0
#         f[i] = z[i-1] +1
#     else:
#         z[i] = 0
#         f[i] = 0
#     res= max(res,z[i])
n = int(input())
nums = list(map(int,input().split()))
z = [0]*n
f = [0]*n
z[0] = 1 if nums[0]>0 else 0
f[0] = 1 if nums[0]<0 else 0
res = 0
for i in range(1,n):
    if nums[i]>0:
        z[i] = z[i-1]+1
        f[i] = f[i-1] +1 if f[i-1]>0 else 0
    elif nums[i]<0:
        z[i]  = f[i-1]+1 if f[i-1]>0 else 0
        f[i] = z[i-1] +1 
    else:
        z[i] =0
        f[i] =0
    res  = max(res,z[i])
print(res)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务