leetcode-152. 乘积最大子数组(动态规划+滚动数组)「建议收藏」

leetcode-152. 乘积最大子数组(动态规划+滚动数组)「建议收藏」给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。typedef long long ll;const int N = 1e5 + 10;const int INF = 0x3f3f3f3f;int f[2][

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

示例 1:

输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:

输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
typedef long long ll;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
int f[2][2];
class Solution { 

public:
int maxProduct(vector<int>& nums) { 

int ans = -INF;
for(int i = 1;i <= nums.size();i ++){ 

int x = nums[i - 1];
if(i == 1){ 

f[i & 1][0] = f[i & 1][1] = x;
ans = max(ans,f[i & 1][0]);
continue;
}
f[i & 1][0] = max(f[(i - 1) & 1][0] * x,max(x,f[(i - 1) & 1][1] * x));
f[i & 1][1] = min(f[(i - 1) & 1][0] * x,min(x,f[(i - 1) & 1][1] * x));
ans = max(ans,f[i & 1][0]);
}
return ans;
}
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168548.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Linux SIGPIPE信号产生原因与解决方法

    Linux SIGPIPE信号产生原因与解决方法TCP四次握手产生SIGPIPE的原因SIGPIPE信号产生的原因:简单来说,就是客户端程序向服务器端程序发送了消息,然后关闭客户端,服务器端返回消息的时候就会收到内核给的SIGPIPE信号。TCP的全双工信道其实是两条单工信道,client端调用close的时候,虽然本意是关闭两条信道,但是其实只能关闭它发送的那一条单工信道,还是可以接受数据,server端还是可以发送…

  • debian查询端口进程_Linux 查看端口占用情况[通俗易懂]

    debian查询端口进程_Linux 查看端口占用情况[通俗易懂]Linux查看端口占用情况可以使用lsof和netstat命令。lsoflsof(listopenfiles)是一个列出当前系统打开文件的工具。lsof查看端口占用语法格式:lsof-i:端口号实例查看服务器8000端口的占用情况:#lsof-i:8000COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAM…

  • 如何使用keil 5 编写 51单片机 工程

    如何使用keil 5 编写 51单片机 工程目前我们通常编写51程序使用的是keil4,而好多编写STM32等单片机程序的使用keil5。那么如何在keil5中兼容51和STM32程序编写,省去切换版本的繁琐呢?很简单只需两步就可以完成。下面这个方法针对已破解keil5的stm32等一系列。这个肯定是最常见的,因为破解keil5然后编写32工程的教程一大把。1、首先下载编写51的相关东西。可以在官网上下载,例如百度keil官

  • JavaScript 闭包详解

    JavaScript 闭包详解JavaScript闭包文章目录JavaScript闭包一、为什么要闭包二、外部得以访问函数内变量三、某些变量得以常驻内存1.垃圾回收机制对闭包的处理2.结合立即执行函数来保存某些变量总结#前言##1.什么是闭包函数闭包函数是声明在另一个函数内的函数,是被嵌套在父函数内部的子函数,在《JS高级程序设计-第3版》中对闭包解释是:”闭包是指有权访问另外一个函数作用域中的变量的函数.”闭包函数可以访问[包裹其的函数]内的各种参数和变量,即便外部函数已经执行完毕.(至于为什么请看下文).一、为什么

  • pdf加密文件怎么解密_打开天正加载自定义文件失败

    pdf加密文件怎么解密_打开天正加载自定义文件失败0.前言在学习Java的类加载器的时候,我们都会看到类加载器的体系结构上图红色框住的就是jvm提供的三个类加载器,而除了这三个外还有一个自定义类加载器。我们学习一门技术,一定要先知道为什么要学习这门技术,这门技术有什么用,比如说自定义类加载器,我们为什么要自定义类加载器。加密:加密class文件解密:用自定义的类加载器去解密并加载加密过的class文件

  • Android修改字体_android设置字体样式

    Android修改字体_android设置字体样式1.将需要添加的ttf字体文件放在frameworks/base/data/fonts/目录A:frameworks/base/data/fonts/clock_thin.ttf2.修改frameworks/base/data/fonts/Android.mk文件,将字体文件编译到system/fonts/目录中M:frameworks/base/data/fonts/Android.mkfont_src_files:=\AndroidClock.ttf\clo

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号