【1567.乘积为正数的最长子数组长度】

目录

一、题目描述

二、算法原理

三、代码实现

cpp 复制代码
class Solution {
public:
    int getMaxLen(vector<int>& nums) 
    {
        int n=nums.size();
        vector<int> f(n);
        vector<int> g(n);
        f[0]=nums[0]>0?1:0;
        g[0]=nums[0]<0?1:0;
        int ret=f[0];
        for(int i=1;i<n;i++)
        {
            if(nums[i]>0)  
            {
                f[i]=1+f[i-1];
                g[i]=g[i-1]==0?0:1+g[i-1];
            }
            else if(nums[i]<0)
            {
                f[i]=g[i-1]>0?1+g[i-1]:0;
                g[i]=1+f[i-1];
            }
            ret=max(f[i],ret);
        }
        return ret;
    }
};
相关推荐
子夜江寒几秒前
YOLO目标检测算法简介
算法·yolo·目标检测
逆境不可逃10 分钟前
LeetCode 热题 100 之 279. 完全平方数 322. 零钱兑换 139. 单词拆分 300. 最长递增子序列
java·算法·leetcode·职场和发展
美式请加冰14 分钟前
位运算符的介绍和使用
数据结构·算法
tankeven16 分钟前
HJ127 小红的双生串
c++·算法
Fcy64818 分钟前
与链表有关的算法题
数据结构·算法·链表
KerwinChou_CN19 分钟前
LangGraph 快速入门
服务器·网络·算法
安之若素.re37 分钟前
918. 环形子数组的最大和
算法
阿阿阿阿里郎40 分钟前
ROS2快速入门--C++基础
开发语言·c++·算法
free-elcmacom42 分钟前
C++<x>new和delete
开发语言·c++·算法
lxh01131 小时前
计算右侧小于当前元素的个数 题解
javascript·数据结构·算法