Leetcode152. 连续子数组的最大乘积

求连续子数组最大乘积 因为数组中存在正负零的情况,所以相比求连续子数组最大和的问题,求最大积稍微复杂一些,不过代码还是很简洁。 假设数组为a[N],max[N] 表示以下标为 i 结尾的子数组乘积最大值,min[N] 表示以下标为 i 结尾的子数组乘积最小值。 为了处理数组元素为负的问题,必须将最小乘积也保存起来。。很容易想到,若当前元素a[i]为负数,那么乘以a[i]*max[i-1]得到的并不一定比a[i]*m 阅读详情

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

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

测试用例的答案是一个 32-位 整数。

子数组 是数组的连续子序列。

题解:动态规划

状态转移方程为:dp[i] = max(dp[i - 1] * nums[i], nums[i])

为每一个状态只与前一个状态有关,可以使用「滚动变量」技巧,使用常数个变量完成这道问题

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

代码如下:

class Solution {
    public int maxProduct(int[] nums) {
        int preMax = nums[0];
        int preMin = nums[0];
        int curMax;
        int curMin;
        int res = nums[0];
        for(int i = 1; i < nums.length;i++) {
            if(nums[i] >=0){
                curMax = Math.max(nums[i], preMax*nums[i]);
                curMin = Math.min(nums[i], preMin*nums[i]);
            }
            else{
                curMax = Math.max(nums[i], preMin*nums[i]);
                curMin = Math.min(nums[i], preMax*nums[i]);
            }
            res = Math.max(curMax,res);
            preMax = curMax;
            preMin = curMin;
        }
        return res;

    }
}

LeetCode 152. 乘积最大子数组【c++/java详细题解】 目录1、题目2、思路:3、c++代码4、java代码 1、题目 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 2、思路: (动态规划) O(n)O(n)O(n) 给你一个整数数组 nums ,让我们找出数组中乘积 阅读详情

相关推荐

LeetCode 152. Maximum Product Subarray--连续子数组最大乘积、最小乘积-动态规划dp[j] = dp[j] * nums[i]

Find the contiguous subarray within an array (containing at least one number) which has the largest product. For example, given the array[2,3,-2,4], the contiguous subarray[2,3]has the largest ...

Top5软件工程硕士,先后在京东、字节从事多年Java后端开发、实时和离线大数据开发 881

连续子数组的最大乘积

连续子数组最大乘积

weixin_43762534的博客 1928

DP-LeetCode152. 乘积最大子数组(Python)

1、题目描述 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。 2、代码详解 法一:可扩展性好(推荐) 二维数组,2*2大小,一维存最大值,一维存负最大值 class Solution(object): def maxProduct(self, nums): """ :type nums: List[int] :rtype: int """ if nums is None: return 0 dp = [[0 for

leetcode之连续子数组的最大乘积

题目: 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 思路: 求乘积的最大值,示例中告诉我们,由于负数的出现,一个正数乘以负数就变成了负数,即:最大值乘以负数就变成了最小值;同理,最小值乘以负数,也可能变成最大值。最大

Monica114的博客 1781

(2024,DDPM,DDIM,流匹配,SDE,ODE)扩散:基础教程

本文的目标是尽可能简单地教授扩散。第一节介绍扩散的基本原理。第二节和第三节展示如何构建随机和确定性扩散采样器。第四部分介绍了密切相关的流匹配,可看作是扩散的推广。​第五节,强调实践中最重要的一些设计选择,包括采样器、噪声时间表和参数化方法。

qq_44681809的博客 1万+

S4-FPGA-K7板级原理图硬件实战

xilinx K7板级硬件实战

weixin_66510961的博客 6148

动态规划-连续子数组的最大乘积

java刷题:动态规划求连续子数组最大乘积

Nelson_hehe的博客 769

易灵思FPGA-软件Efinity和Modelsim联仿设置

文章目录前言一、modelsim破解过程二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智

qq_35221855的博客 5358

LeetCode第 152 题:乘积最大子数组(C++)

152. 乘积最大子数组 - 力扣(LeetCode) 要求是连续的子数组,动态规划但是要考虑负数的情况: 乘积最大子数组 - 乘积最大子数组 - 力扣(LeetCode) class Solution { public: int maxProduct(vector<int>& nums) { int n = nums.size(); vector<int> maxf(nums), minf(nums); for(int

zj 654

CVAT本地部署保姆级教程:用Docker Compose在Ubuntu上5分钟搞定你的私有数据标注平台

本文提供CVAT本地部署的保姆级教程,详细讲解如何在Ubuntu系统上使用Docker Compose快速搭建私有数据标注平台。从环境准备、Docker配置到CVAT部署全流程,涵盖硬件要求、性能优化及安全加固等关键步骤,帮助开发团队5分钟内完成高效、安全的标注环境搭建。

weixin_42619742的博客 383

【人工智能】-01、人工智能概述

从理论上讲没有当今计算机不能计算求解的问题(B)。A. 是B. 不是C. 尚无定论。

super_mochi1 348

Leetcode-152.乘积最大连续子数组

题目来源:https://leetcode-cn.com/problems/maximum-product-subarray/ 给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释:子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释:...

sinat_41473555的博客 785

基于JeecgBoot 3.9.0 开源项目的企业管理平台

基于JeecgBoot 3.9.0 开源项目的企业管理平台

宁波阿成的博客 370

LeetCode152 连续子数组的最大乘积

Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product. Example 1: Input: [2,3,-2,4] Output: 6 Explanation: [2,3] has ...

fruit513的博客 600

车间数据孤岛终于破了!C#上位机+MQTT打通产线与MES,数据延迟从小时级降到秒级

本文针对工业上位机开发中常见的车间数据与企业管理系统(MES)割裂问题,提出基于C#和MQTT协议的完整解决方案。通过EMQX MQTT Broker实现数据实时双向传输,将质量追溯时间从2小时缩短至10秒,生产计划自动下发,实现秒级数据延迟。方案采用分层解耦架构,支持设备更换和系统升级,核心优势包括低延迟、高可靠性和易扩展性。文章详细介绍了MQTT协议选型理由、整体架构设计、技术选型(EMQX Broker和MqttNet客户端),并提供了C#实现代码和部署流程。该方案已在实际产线验证,可有效解决&quo

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 479

Pre-suite 开发之MFi功能搭建

Pre-suite 固件中只有带无线硬件的Ezairo 7160sl才具备无线通信能力,其无线功能包括标准BLE 5.2 低功耗蓝牙功能以及非标准的低功耗无线音频流功能。Ezairo 7160sl 支持3种低功耗无线音频流协议:来自APPLE的MFi,来自Google的ASHA以及来自onsemi的remote mic。其中MFi音频流走的G.722编码的Mode1,速率为64kbps;而非MFi音频流走的G.722的Mode3,速率为48kbps.

SnowYang2017的博客 1496

LeetCode 152 乘积最大子数组 NC83 连续子数组的最大乘积

给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释:子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释:结果不能为 2, 因为 [-2,-1] 不是子数组。 解题思路: 考虑当前位置如果是一个负数的话,那么我们希望以它前一个位置结尾的某个段的积也是个负数,这样就可以负负得正,并且我们希望这个积尽可能......

麦格芬230的博客 446

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最大连续子数组和 动态规划_LeetCode152. 乘积最大子数组

要求乘积最大的子数组(子数组一定都是连续的),可以暴力枚举子数组起点和终点,求和。但是肯定超时。如果用动态规划,则只需要一遍扫描就可以得出结果。可以用maxProduct[i]表示以i结尾的最大的子数组乘积。如果所有nums[i]都是正数,则maxProduct[i]就是max(nums[i], maxProduct[i - 1] * nums[i]), 也就是当前数和以i - 1结尾的最大子数组...

weixin_39718460的博客 204

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

力扣152题:乘积最大子数组

力扣152题:乘积最大子数组,动态规划,dp

sxycylq的博客 288

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LeetCode(152)-Maximum Product Subarray(连续子数组最大乘积)

题目: Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product. Example 1: Input: [2,3,-2,4] Output: 6 Explanation: [2,3] ...

Fly_Fly_Zhang的博客 694

LeetCode-152:Maximum Product Subarray (乘积最大连续子数组) -- medium

给定数组,给出最大乘积的连续子数组

大树先生的博客 1967

【Leetcode乘积最大子序列】152. 乘积最大子数组(子序列连续)

152.乘积最大子数组

AloneYue优快云 306

【LeetCode】152. Maximum Product Subarray最大连续子数组乘积

问题描述Find the contiguous subarray within an array (containing at least one number) which has the largest product.For example, given the array [2,3,-2,4], the contiguous subarray [2,3] has the largest p

myangel_xy的博客 299

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

2021-10-18:乘积最大子数组。给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。力扣152。 福大大 答案2021-10-18: 动态规划。 情况1.i位置。[i]。 情况2.i位置向左扩。[i]*dp[i-1]。dp[i-1]是最大累乘积。 情况3.i位置向左扩。[i]*dp[i-1]。dp[i-1]是最小累乘积。 时间复杂度:O(N)。 空间复杂度:O(1)。 代码用golang编写。代码如下: package main

福大大架构师每日一题 2万+

152.乘积最大子数组

题目 LeetCode 152 题 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 算法思路 最开始我用一个二维数组存放nums[i,j]的乘积,将所有i到j的乘积都计算出来存放在二维数组中,这样时间复杂度很高,会超

laoli的博客 296

乘积最大子数组(Java)

package leetCoder; /** * @author : zhaoliang * @program :newCoder * @description : 乘积最大子数组 * @create : 2020/07/03 14:58 */ public class LeetCode152 { //给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 public int maxProduct(int[]

sinat_40968110的博客 341
上一篇: Charles的Map Remote功能
下一篇: Leetcode153. 寻找旋转排序数组中的最小值(无重复元素)
魑魅魍魉114
博客等级 码龄10年 165粉丝 240原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值