力扣-152.乘积最大子数组

【中等】力扣算法题解析LeetCode152:乘积最大子数组 本文介绍了如何高效解决寻找数组中乘积最大的非空连续子数组问题。通过动态维护当前子数组的最大和最小乘积(处理负数情况),算法在O(n)时间内完成计算。Java代码展示了具体实现,包括初始化变量、遍历更新极值以及返回全局最大值。该方法适用于正数、负数和零的情况,确保结果正确且高效。 阅读详情

乘积最大子数组较最大子数组和力扣-53.最大子数组和_Node_Su的博客-优快云博客最大的区别在于,负数*负数 = 正数

也就是当当前数为负数时,求以当前数结尾的 dp[i] 的最大值,有可能是要*前面的最小值(因为当前是负数)

因此需要多一个 dp_1 数组来存储最小值

class Solution(object):
    def maxProduct(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        dp = [1] * n
        dp_1 = [1] * n
        dp[0] = nums[0]
        dp_1[0] = nums[0]
        for i in range(1, n):
            dp[i] = max(dp[i - 1] * nums[i], nums[i], dp_1[i - 1] * nums[i])
            dp_1[i] = min(dp_1[i - 1] * nums[i], nums[i], dp[i - 1] * nums[i])
        dp.extend(dp_1)
        return max(dp)


if __name__ == '__main__':
    nums = [1, 2, -1, -2, 2, 1, -2, 1, 4, -5, 4]
    Sol = Solution()
    res = Solution.maxProduct(Sol, nums)
    print(res)

Ubuntu下安装Hive3.1.2教程(附MySQL安装方法及安装包) 文章目录前言一、安装Hive1. 下载压缩包并解压2. 安装Hive3. 配置环境变量4. 修改配置文件二、MySQL安装与配置1. 安装MySQL2. 安装MySQL jdbc包3. 为Hive创建MySQL账号三、验证Hive安装及错误处理1. 启动Hadoop2. 启动hive3. 运行Hive实例总结 前言 Hive 的安装需要建立在 Hadoop 的之上(类似于Hbase),关于 Hadoop 的单机安装以及伪分布式安装可以参考作者的另两篇博客: Ubuntu下单机安装Hadoop详细教程(附 阅读详情

相关推荐

模糊综合评价模型

一.引子 1.数学归纳法:同高中知识 2.秃子悖论:秃子悖论 这俩个例子都是类似于“量变引起质变”的道理,而在数学中我们把这类问题的性质叫做“模糊性”,在生活中我们也经常能遇到一些模糊的概念,比如年轻、帅、很少很多… 二.概述 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。——来自百度百

The__Tyche的博客 2万+

力扣(LeetCode)152. 乘积最大子数组(2022.06.01)

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。子数组 是数组的连续子序列。示例 1:示例 2:提示:来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/maximum-product-subarray方法一:动态规划C++提交内容:

ChaoYue_miku的博客 457

python自动交易 缠论_缠论自动交易系统实现了

一、缘起:缠中说禅的伟大,我想你只要上网搜索一下就知道了,他的才气不用我说,我只想说说他的《教你炒股票》系列文章,108篇文章,将他的股票操盘秘籍全部公开给广大的股友了,更有缠友将其理论写成公式,在网上也是广为流传,深受广大缠友们的喜爱。我也是缠中说禅的忠实崇拜者之一,从2008年开始每天都使用缠论来看盘,特别想将缠论写成交易系统,让计算加来帮助我们自动交易,从而减轻我们盯盘的辛劳,可是苦于没有好...

weixin_39970689的博客 4637

一刷174-力扣热题-152乘积最大子数组(m)

题目: 给你一个整数数组 nums , 请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 -------------------- 输入: nums = [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 输入: nums = [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 提示: 1 <= nums.l

唐宋元明清的博客 255

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

警惕!数字签名伪造的攻防演练:用SigThief克隆证书的真实测试(Windows环境)

本文深入探讨了Windows环境下数字签名伪造的攻防技术,详细介绍了使用SigThief工具进行签名提取与克隆的实战步骤。通过真实测试案例,揭示了数字签名安全机制的潜在漏洞,并提供了有效的防御策略和检测技术,帮助安全人员提升系统防护能力。

weixin_42530732的博客 408

力扣【152】乘积最大子数组

题目: 给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释:子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释:结果不能为 2, 因为 [-2,-1] 不是子数组。 题解: 方法一:动态规划(等我复习dp的时候再看...) class Solution { public int maxProduct...

qq1922631820的博客 201

STM32G0——USB虚拟串口

STM32G0用cubeMX配置实现USB虚拟串口

阿昌 2321

152. 乘积最大子数组---js解法

题目描述: 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 152. 乘积最大子数组 解题思路: 这道题跟53. 最大子序和思路差不多,区别就是要考虑到负数的问题,存在负负得正可能会比当前的最大值还大,当我们建立两个动态规划数组时,要找到最大值,同时又找到最小值,到下一个新的数,我们要决定保留原来的子数组同时把这个数添加进去,还是用这个数新开一个子数组时,需要用最大值和最小值分别做两次判断。 var maxProduct

qq_45679015的博客 408

电赛2024年H题智能小车基于MSPM0G3507主控MCU(利用8路灰度加上MPU6050的解决方式)

最后我觉得这个项目最重要的部分还是陀螺仪的精准度,如果一个陀螺仪的精准度高,这个项目就十分简单了,像mpu6050这种陀螺仪精准度就稍微差了一点,他有个最严重的问题就是温漂,偏航角会随着温度变化为变化,这一点在跑发挥项一的时候十分关键的,因为这个只差基督就会导致车子跑偏,导致无法完成 整个项目。如果条件足够的话建议可以换一个好一点的陀螺仪,然后就是灰度如果没有条件同样也可以换成红外。以上就是本次项目的一些小建议。

weixin_60991529的博客 6243

芒果YOLOv5改进107:ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

包括YOLOv5、YOLOv7、YOLOv8等模型改进 956

「力扣」第 152 题:乘积最大的子数组(动态规划)

思路 这个问题很像「力扣」第 53 题:最大子序和,只不过当前这个问题求的是乘积的最大值; 「连续」这个概念很重要,可以参考第 53 题的状态设计,将状态设计为:以 nums[i]结尾的连续子数组的最大值; 类似状态设计的问题还有「力扣」第 300 题:最长上升子序列,「子数组」、「子序列」问题的状态设计的特点是:以 nums[i] 结尾,这是一个经验,可以简化讨论。 提示:以 nums[i] 结尾这件事情很重要,贯穿整个解题过程始终,请大家留意。 分析与第 53 题的差异 求乘积的最大值,示例中

李威威的博客 1151

k230+CanMV+micropython环境下byte、int、hex、string之间的转换常用函数实测

【代码】k230+CanMV+micropython环境下byte、int、hex、string之间的转换常用函数实测。

weixin_47446386的博客 119

Leetcode 152. 乘积最大子数组

Leetcode 152. 乘积最大子数组1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/maximum-product-subarray/   本质上就是一个动态规划问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #incl

珍惜 9217

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

dp算法 力扣152乘积最大子数组

dp算法 力扣152乘积最大子数组

m0_68700019的博客 1212

android 蓝牙通讯demo

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

Leetcode-152 乘积最大子数组

比如[3, 4, -2, 7, -1],我们使用上述转移方程,最后的结果是12,实际上应该是3 * 4 * (-2) * 7 * (-1)。子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解释: 子数组 [2,3] 有最大乘积 6。输入: nums = [2,3,-2,4]输入: nums = [-2,0,-1]的乘积,你可能会想到这样的转移方程。,请你找出数组中乘积最大的非空连续。这里,可以进行逻辑的简化:如果。

weixin_51332735的博客 880

152. 乘积最大子数组 - 力扣(LeetCode)

给你一个整数数组nums,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个整数。输入: nums = [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。输入: nums = [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。

Dubhehug的博客 378

力扣(LeetCode)刷题第152题:乘积最大子数组

文章目录前言一、分析题目二、解题思路1.找出DP状态2.找出DP状态转移方程3.代码部分三、总结 前言 题目地址:乘积最大子数组 一、分析题目 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 我觉得你如果做的多了

代码届的小白的博客 1040

力扣152. 乘积最大子数组

仅为个人刷题笔记

shuaishuai__的博客 291

乘积最大子数组--LeetCode152

乘积最大子数组–LeetCode152 题目 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 思路:动态规划的思想 本题和最大子序和...

何时立秋的博客--向前有路,未来可期 238

LeetCode152,乘积最大子数组

LeetCode152,乘积最大子数组 题目描述 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum

fly_fly_fly_pig的博客 350

LeetCode-152. 乘积最大子数组

LeetCode-152. 乘积最大子数组(中等) 题目地址:https://leetcode-cn.com/problems/maximum-product-subarray/ 文章目录LeetCode-152. 乘积最大子数组(中等)1. 题目描述及示例示例一:示例二:2. 题解和代码实现2.1 初始化2.2 状态转移方程代码实现(C++ 2022-4-8)3. 总结 1. 题目描述及示例       给你一个整数数组 nums ,请你找出数组

qq_43377337的博客 4725

Java题解LeetCode——152.乘积最大子数组

LeetCode——152.乘积最大子数组 题目 152.乘积最大子数组 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 解析 连续子数组,就是比如示例1中,[2,3]就是连续子数组,[2,-2]就不是连续子数组

影龙武的博客qq_43594119 604

LeetCode152. 乘积最大子数组

题目 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。链接 思路 动态规划,设dp[i]为以nums[i]结尾的连续子数组中乘积最大的值; 则dp[i]=max(dp[i-1]*nums[i],nums[i]),由于存在负数,所以需要加一个维度同时存储以num[i]结尾的连续子数组中乘积最大值和最小值,当遇到nums[i]<0时,dp[i]的最大积计算时需要乘以dp[i-1]的最小积,dp[i]的最小积计算时需要乘以dp[i-

香榭的落叶 377

LeetCode 152. 乘积最大子数组 | Python

使用动态规划,根据题意进行状态设计,推导出状态转移方程,用代码加以实现,进而解决《152. 乘积最大子数组》问题

"大梦三千秋的博客 1716
上一篇: 力扣-918.环形子数组的最大和
下一篇: ModuleNotFoundError: No module named ‘sgmllib‘
Node_Su
博客等级 码龄10年 17粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值