当前位置: 首页 > news >正文

力扣题解(乘积为正数的最长子数组长度)

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

已解答

中等

给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。

一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。

请你返回乘积为正数的最长子数组长度。

本题要求乘积为正数,而整数数组中存在正数和负数两种,因此需要分别用两个数组保存,一个用于保存前面是正数的最大长度(名字为pos),一个用来保存前面是负数的最大长度(名字是negpos),在面对第i个数字为正,负的情况时,若第i个是正,则pos[i]=pos[i-1]+1,negpos[i]=negpos[i-1]+1. 第i个是负数,则pos[i]=negpos[i-1]+1,negpos[i]=pos[i-1]+1.

递归求解即可

class Solution {
public:int getMaxLen(vector<int>& nums) {int n=nums.size();vector<int>pos(n+1,0);vector<int>negtive(n+1,0);int j=0;int sum=0;for(int i=0;i<n;i++){int num=nums[i];if(num>0){pos[i+1]=pos[i]+1;if(negtive[i]!=0)negtive[i+1]=negtive[i]+1;}else if(num<0){negtive[i+1]=pos[i]+1;if(negtive[i]!=0)pos[i+1]=negtive[i]+1;}else{pos[i+1]=negtive[i+1]=0;         }}int ret=pos[0];for(int i=1;i<=n;i++){if(pos[i]>ret){ret=pos[i];}}return ret;}};

http://www.lryc.cn/news/398559.html

相关文章:

  • PPTP、L2TP、IPSec、IPS 有什么区别?
  • SpringBoot注解--11--@JSONField @JsonProperty
  • C语言 | Leetcode C语言题解之第221题最大正方形
  • AI数据服务如何驱使AI商业化,实现在各行业落地融合
  • 户用光伏项目开发流程
  • C++ 函数返回值是引用类型使用场景
  • CUDA原子操作
  • 08.C2W3.Auto-complete and Language Models
  • 【linux】log 保存和过滤
  • GeoTrust ——适合企业使用的SSL证书!
  • Kubelet 认证
  • aws slb
  • 【AI大模型】ChatGPT-4 对比 ChatGPT-3.5:有哪些优势
  • 详解yolov5的网络结构
  • 汽车零配件行业看板管理系统应用
  • 【Go】函数的使用
  • 宝塔面板运行Admin.net框架
  • Javaweb11-Filter过滤器
  • 【AI-7】CUDA
  • ctfshow-web入门-文件上传(web164、web165)图片二次渲染绕过
  • 基于实现Runnable接口的java多线程
  • 如何在uniapp中使用websocket?
  • PCL 点云PFH特征描述子
  • linux程序安装-编译-rpm-yum
  • 【网络协议】PIM
  • Redis 中的跳跃表(Skiplist)基本介绍
  • C语言编译和编译预处理
  • ahb 总线的一些思考
  • spark shuffle写操作——SortShuffleWriter
  • ESP32CAM物联网教学12