首页 > 试题广场 >

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

[编程题]乘积为正数的最长连续子数组
  • 热度指数:485 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为 n 的整数数组,请你找出其中最长的乘积为正数的子数组长度。
子数组的定义是原数组中一定长度的连续数字组成的数组。

数据范围: , 数组中的元素满足
示例1

输入

[1,2,3,-1,4]

输出

3
示例2

输入

[1,2,3,0,4]

输出

3
头像 姐姐的遮阳伞
发表于 2022-04-05 19:20:12
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型ArrayList 展开全文
头像 氯化钠哈哈哈
发表于 2023-12-24 16:03:44
非动态规划思路: 以0为边界先将所有数据分块,然后对每个块进行遍历 找到每个块中第一个负数和最后一个负数 然后计算当前块中,左边界和最后一个负数之间的距离 与 右边界与第一个负数的距离,距离更大的就是当前块中的答案 最后在所有块中的答案中,找到最大数字,即最终答案 class 展开全文