文章目录

  • 1. 题目
  • 2. 解题

1. 题目

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

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

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

示例  1:
输入:nums = [1,-2,-3,4]
输出:4
解释:数组本身乘积就是正数,值为 24 。示例 2:
输入:nums = [0,1,-2,-3,-4]
输出:3
解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6 。
注意,我们不能把 0 也包括到子数组中,因为这样乘积为 0 ,不是正数。示例 3:
输入:nums = [-1,-2,-3,0,1]
输出:2
解释:乘积为正数的最长子数组是 [-1,-2] 或者 [-2,-3] 。示例 4:
输入:nums = [-1,2]
输出:1示例 5:
输入:nums = [1,2,3,5,-6,4,0,10]
输出:4提示:
1 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-length-of-subarray-with-positive-product
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 记录第一次出现正负状态的位置
class Solution {public:int getMaxLen(vector<int>& nums) {int maxlen = 0, i, pos = 0, neg = -1, n = nums.size(), p = 1;for(int i = 0; i < n; ++i){if(nums[i] < 0){p *= -1;//乘积变号if(neg == -1)//第一次负数neg = i;}else if(nums[i] == 0)//乘积为0{p = 1;//重置符号pos = i+1;//下一次乘积开始的位置neg = -1;}if(p > 0)maxlen = max(maxlen, i-pos+1);//乘积为 + 的长度else if(p < 0)maxlen = max(maxlen, i-neg);//乘积为负, 需要减去第一个出现的负号位置,就是乘积为正}return maxlen;}
};

296 ms 57.9 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1567. 乘积为正数的最长子数组长度相关推荐

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

    题目描述: 题解: 动态规划 1.维护两个数组: dppos[i]表示以nums[i]结尾的积为正数的子数组长度,dpneg[i]表示以nums[i]结尾的积为负数的子数组长度,初始化为全0,如果nu ...

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

    1567. 乘积为正数的最长子数组长度 ●● 描述 给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度. 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组. 请你返回乘积为 ...

  3. 【LeetCode】LeetCode之乘积为正数的最长子数组长度——暴力枚举+动态规划+Kadane算法

  4. 动态规划——乘积为正数的最长子数组长度(Leetcode 1567)

    题目选自Leetcode 1567. 乘积为正数的最长子数组长度 题目描述: 解题思路: 解题代码: class Solution { public:int getMaxLen(vector<i ...

  5. leetcode1567. 乘积为正数的最长子数组长度(Python3、c++)

    文章目录 leetcode1567. 乘积为正数的最长子数组长度 方法:动态规划 思路: 代码: Python3: cpp: 结果: leetcode1567. 乘积为正数的最长子数组长度 给你一个整 ...

  6. LeetCode:输出整体轮廓线和最长子数组长度

    LeetCode:描述轮廓线和最长子数组长度 目录: 输出整体轮廓线 返回最长子数组长度 求数组中奇数和偶数个数相同的最长子数组 1. 输出整体轮廓线 给定一个N行3列二维数组, 每一行表示有一座大楼 ...

  7. LeetCode 325. 和等于 k 的最长子数组长度(哈希表记录第一次出现的状态)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个数组 nums 和一个目标值 k,找到和等于 k 的最长子数组长度. 如果不存在任意一个符合要求的子数组,则返回 0. 注意: nums 数组的总 ...

  8. 左神算法:未排序正数数组中累加和为给定值的最长子数组长度(Java版)

    本题来自左神<程序员代码面试指南>"未排序正数数组中累加和为给定值的最长子数组长度"题目. 题目 牛客OJ:未排序数组中累加和为给定值的最长子数组长度 题解 本文提供的 ...

  9. 未排序正整数组中累加和为指定值的最长子数组长度

    题目:给定一个数组arr,该数组无序,但每个值都为正数,在给定一个正数k.求arr中所有的子数组中所有元素累加为k的最长子数组长度.  例如,arr = [1,2,1,1,1],k = 3.  累加和 ...

最新文章

  1. 添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加
  2. Linux下实现apache代理tomcat
  3. OpenWrt——配置L2TP客户端
  4. flink check-point save-point理解
  5. securecrt哪个版本好用_电脑跑分测试软件哪个好?好用的电脑跑分软件推荐
  6. zeppelin连接数据源_使用开放源代码合同(open-zeppelin)创建以太坊令牌
  7. python简易_Python简易爬虫
  8. maven netty 配置_进阿里、腾讯、字节跳动、美团必掌握的Netty
  9. XILINX-DDR3IP核的使用
  10. centos7网络配置总结
  11. 断言python_Python 断言
  12. oracle数据库查询904错误,EXP-00008:遇到ORACLE错误904问题详解
  13. 笔记本计算机摄像头怎么打开,笔记本都有摄像头吗_笔记本电脑摄像头怎么打开-win7之家...
  14. @TableName
  15. Fedora 32 Server 在ThinkPad X61上安装,自带了有线、无线网卡驱动
  16. [Unity3D]水族馆游戏教程一
  17. mPaas苹果客户端离线包引入http的js白屏问题解决办法
  18. 蓝牙模块芯片型号有哪些?国产还是进口?核心指标有哪些
  19. 2021工业交换机前十大品牌排行榜,工业交换机哪个牌子好?
  20. 喜马拉雅欲“摘星”,可耳朵经济难“独立”

热门文章

  1. mac svn工具_Cornerstone 4 for mac(svn管理工具)
  2. 脚本启动显示查询频繁被服务器防御_面对CC攻击,该如何进行防御
  3. 华为手机连电脑_手机、电脑无网高速互传!华为神技逆天
  4. Qt DLL总结-创建及调用QT的 DLL
  5. MATLAB中MEX文件的编写与调试
  6. 博客地址 RSS地址
  7. platform驱动开发套路、DM9000的一些分析
  8. layui 在springboot2.x 时,页面展示不了layui的问题
  9. SQL强化(二) 在Oracle 中写代码
  10. Linux中source是什么指令?