1567. 乘积为正数的最长子数组长度
难度:中等
给你一个整数数组 nums
,请你求出乘积为正数的最长子数组的长度。
一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。
请你返回乘积为正数的最长子数组长度。
示例 1:
1 | 输入:nums = [1,-2,-3,4] |
示例 2:
1 | 输入:nums = [0,1,-2,-3,-4] |
示例 3:
1 | 输入:nums = [-1,-2,-3,0,1] |
示例 4:
1 | 输入:nums = [-1,2] |
示例 5:
1 | 输入:nums = [1,2,3,5,-6,4,0,10] |
提示:
1 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
动态规划
- 当$nums[i]>0$时:
$positive[i] = positive[i-1]+1;$
$\text { negative[ } i]=\left{\begin{array}{ll}
\text { negative }[i-1]+1, & \text { negative }[i-1]>0 \
0, & \text { negative }[i-1]=0
\end{array}\right.$
- 当$nums[i]<0$时:
$negative[i]=positive[i-1]+1$
$\text { positive }[i]=\left{\begin{array}{ll}
\text { negative }[i-1]+1, & \text { negative }[i-1]>0 \
0, & \text { negative }[i-1]=0
\end{array}\right.$
当$nums[i]=0$时
$positive[i]=0;$
$negative[i]=0;$
1 | class Solution { |