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

动态规划之连续乘积最大子数组 & 连续和最大子数组 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23。 阅读详情

题目

在这里插入图片描述

题解

如果当前数字为正,那到第i-1个的最大乘积乘以当前数字;
如果当前数字为负,那到第i-1个的最小乘积乘以当前数字;

n = int(input())
a =list(map(int, input().split())) 
dp1 = [float("-inf")]*n
dp2 = [float("-inf")]*n
dp1[0] = a[0]
dp2[0] = a[0]
res = dp1[0]
for i in range(1,n):
        dp1[i] = max(dp1[i-1]*a[i],a[i],dp2[i-1]*a[i])
        dp2[i] = min(dp1[i-1]*a[i],a[i],dp2[i-1]*a[i])
        res = max(res,dp1[i])
print(res)

Java实现最大连续乘积子数组 1 问题描述 给定一个浮点数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组。 2 解决方案 2.1 蛮力法 该方法的时间复杂度为O(n^2)。 package com.liuzhen.practice; public class Main { public void getResult(double[] A) { double max = 1... 阅读详情

相关推荐

【牛客刷题】DP7 连续子数组的最大乘积:动态规划精解

本文介绍了一种使用动态规划解决"连续子数组最大乘积"问题的高效方法。该问题的核心挑战在于处理负数相乘变正的情况,传统方法无法直接适用。作者提出维护两个动态规划数组:dpMax存储当前位置的最大乘积,dpMin存储最小乘积(保留负值以应对负负得正)。通过比较前驱状态与当前元素的三种可能乘积(延续最大乘积、延续最小乘积和重新开始),实现状态转移。最终遍历dpMax数组得到全局最大值。该方法时间复杂度为O(n),空间复杂度为O(n),能有效处理包含正数、负数和零的各种情况。文章提供了详细的算法

字节卷动 386

动态规划——求最大乘积

给出N个1-9的数字 (v1,v2,…,vN), 不改变它们的相对位置, 在中间加入K个乘号和N-K-1个加号, 括号随便加,使最终结果最大。因为乘号和加号一共就是N-1个,所以恰好每两个相邻数字之间都有一个符号。例如: N=5, K=2,5个数字分别为1、2、3、4、5,可以进行如下运算:等等.第一行输入M(M<=10)表示有M组数据。每组数据输入两整数N和K(N<=20, K<20), 接下来输入N个1-9的数字。

lyhizjj的博客 1152

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

最大子段连续积

描述: 一个数组,现在让你求出这个序列的连续子序列的最大乘积,并且求出开始位置和结束位置。 解决: 类似最大字段连续和一样的求法,这题也可以用Dp,不过我更喜欢用普通的O(n)算法求得;最大字段连续积比最大字段连续和要复杂一点,原因就是多了一个”负负得正”,当前位置的最大积可以由当前的数(负数)乘以当前的最小值(负数)来得到一个很大的正数,所以,最大积的状态可以由最小值和最大值两个转移过来。同样,我们要

FlushHip 1697

从PLC到机械臂:揭秘工业自动化中的信号交互与控制逻辑

本文深入解析了PLC与机械臂在工业自动化中的信号交互与控制逻辑,详细介绍了硬件连接方案、通信机制及控制逻辑设计。通过西门子PLC与六轴机械臂的实战案例,展示了从信号采集到动作执行的完整流程,并探讨了高级控制策略与行业应用前景,为工程师提供了一套完整的实践框架。

weixin_29304985的博客 388

zedboard(5)spi轮询和中断

一个SPI可以有几个从设备 在程序中使用 s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel) 选择。其实就是吧对应设备的ss拉低。 备注:只选一个ss,可以不用指定。(感觉,还没测试) 这是xspips.c中定义的函数,发送和接收有 XSpiPs_Transfer 和 XSpiPs_PolledTransfer 两个函数,分别采用中断和轮询模式。    一、轮询模式 米联客参考代码,SpiPs_Init中部分和官方例程流程一样,Spi

Kiss丶小坏 5890

最大连续子数列积

在一个数组中,找出一个连续的子数组,使得子数组中元素的乘积最大。比如,对于数组[2,3,-2,4], 满足要求的子数组[2,3],其乘积为6。 题目分析:  这题跟“最大连续子数列和”非常类似,只不过变成了“最大连续子数列积”,所以解决思路也很类似。 仅仅有一个小细节需要注意,就是负负得正,两个负数的乘积是正数,因此我们不仅要跟踪最大值,还要跟踪 最小值。 public i...

Billy's Blog 878

AI开发助手介绍

AI开发助手介绍随着NLP方向发展越来越成熟,AI写代码领域出现了几个非常好的模型,今天笔者给大家推荐几个AI Coding 助手AI Coding助手是以IDEA插件或vim插件形式提供服务,在编辑器中写代码时,可以实时预测下一行要输入的代码,提升开发效率。Github Copilot首先要介绍的是Github Copilot,Copilot是个AI Coding助手,它从注释和代码中提取上下文,给出单行和整个函数的代码建议,Copilot由Open AI 的CodeX模型提供支持,它是一个由OpenAI

bobo_simpler的博客 5765

经典 - 最大和/最大积连续子序列问题

<br />原文:<br />http://fayaa.com/tiku/view/56/<br /> <br /> <br />对于一个包含了正负整数的数组,求其“最大和”连续子序列 以及 “最大积”连续子序列<br />比如:<br />3 -4 8 -5 2 6 -7<br />最大和子序列是:8 -5 2 6,和为11<br />最大积子序列是:3 -4 8 -5 2 6,积自己算:)<br /> <br /> <br />对于最大和问题: <br /> 我们令F(n)表示[0,n]区间内以d[n

hertz2007的专栏 1792

Meta DINOv3实战指南:如何用7B参数ViT模型提升你的视觉任务性能(附Hugging Face部署教程)

本文提供了Meta DINOv3 7B参数ViT模型的实战部署指南。文章详细解析了该自监督视觉模型的优势,并重点演示了如何在Hugging Face平台上高效加载这一大规模模型,同时给出了图像分类、语义分割等下游任务的性能提升技巧与代码示例,帮助开发者在实际视觉任务中应用这一前沿技术。

pz89012345的博客 324

微信小程序 - 详细解决web-view公众号文章或第三方网站分享转发后打开失败,页面显示“无法打开该页面,不支持打开“、“页面不存在“报错提示,苹果IOS系统手机打开是空白页,安卓手机系统会有提示!

微信小程序,公众号文章,第三方H5网页,内嵌网站分享后打不开,web-view,页面分享,小程序里公众号文章转发后无法打开,白屏,页面空白什么都没有,不支持打开,无法打开该页面,页面不存在,业务域名配置好了还是不行,公众号和小程序已经关联,iOS端苹果真机打开空白页,安卓手机,页面分享后,用户打不开提示错误,提示页面不存在,如何解决页面提示无法打开该页面,微信小程序web-view无法打开该页面不支持打开的解决方法,无法打开该页面不支持打开,最新详细解决方案,分享之后无法打开页面,提示无法打开该页面,不支持

🏆 前端领域优质创作者 1万+

【动态规划】NK刷题之DP7 连续子数组的最大乘积

这个题虽然是中等难度的题目,但对我的帮助还是挺大,让我对分治和动态规划这两种算法又有了更深的理解,分治法和动态规划这两种方法都可以AC这道题,看自己更擅长哪一种吧,我更喜欢动态规划的简洁,因为分治要注意的细节还是挺多的,容易写出bug,最后关于这篇博客有什么问题和不足,欢迎大家在评论区告诉我哦😄😄.↩︎。

wszhj_的博客 1894

pycharm下载continue插件接入DeepSeek的API,向其提问输出乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2220

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

最大连续乘积子序列 #include #define LENGTH 8#define min(n1, n2) (n1 > n2 ? n2 : n1)#define max(n1, n2) (n1 > n2 ? n1 : n2)double MaxProSub(double a[], int length);int main(){ double arr[LENGTH] = {-2.5, 4,

Albert__Sun的博客 1139

密码学系列3-Elgamal加密及其IND-CPA安全性证明

但这没有任何影响,敌手本身就只能知道公钥,他并没有能力知道挑战者是否知道对应的私钥。所以上述整个游戏就是一个模拟实验,敌手无法区分挑战者运行的是这个模拟实验,还是真正的按照第一节的算法构造的实验(挑战者知道私钥…为什么合起来的时候有1/2:因为T既可能是随机的也可能是g^{ab},这两种情况概率为1/2。能够攻破Elgamal加密方案,那么挑战者利用敌手的能力构建下面游戏,来求解困难性问题DDH。就是挑战者选的随机数,虽然挑战者自己也不知道。),否则挑战者输出0,作为DDH的回答。

qq_41359358的博客 1249

第201期 解锁科研效率新高度:Claude 科学技能插件(claude-scientific-skills)深度体验

科研AI助手Claude Scientific Skills开源工具为Claude大模型扩展科学能力,覆盖数据可视化、数学计算、学术格式处理等科研全流程需求。该插件支持LaTeX公式生成、自动化科研图表绘制、学术文档规范校正等功能,让研究人员通过自然语言指令即可完成专业任务。项目开源可定制,支持特定学科需求扩展,目前已托管于GitHub。使用门槛低,只需配置Claude API密钥即可快速启用,帮助科研人员从繁琐技术细节中解放,聚焦核心研究创新。

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 1358

动态规划——连续子数组最大和/乘积

动态规划

belle_mei的博客 1010

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

Nelson_hehe的博客 769

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【算法训练-动态规划 二】【线性DP问题】连续子数组的最大和、乘积最大子数组、最长递增子序列

dp[i]表示以nums[i]这个数结尾的最长递增子序列的长度,这个定义中 nums[i] 必须被选取,且必须是这个子序列的最后一个元素;

MaoLin Tian's Blog 888

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

动态规划——最大连续子数组和(或乘积)

public static int maxSubArray(int[] nums) { if (nums == null || nums.length == 0) return 0; int curr = 0; int sum = Integer.MIN_VALUE; for (int i = 0; i < nums.length; i++) { curr += num

IFollowRivers 1248

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

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

weixin_39718460的博客 204

python连续乘_动态规划--求最大连续子数组的和(Python实现)&求解最大连续乘积字串(Python实现)...

标签:def MaxSum(self,array,n):sum=array[0]result=array[0]for i in range(0,n):if sum<0:sum=a[i]else:sum=sum+a[i]start1=iif sum>result:result=sumend=istart=start1print result,start,end上述采用的是动态规划思想:假...

weixin_39986543的博客 181

动态规划经典例题:乘积最大连续子数组

题目: 思路:动态规划 fmax(i) 表示以第i个元素结尾的乘积最大子数组的乘积,fmin(i) 表示以第i个元素结尾的乘积最小子数组的乘积,这里分为最大和最小是因为数组可能存在负数,最大值乘以负数变成较小值,最小值乘以一个负数也可能变成最大值。 class Solution { public: int maxProduct(vector<int>& nums) { vector <int> maxF(nums), m...

1万+

最大连续子数组和、乘积(动态规划)

1、最大连续子数组和int MaxSumSubArray(int *a, int length) { int currentSum = 0; int maxSum = a[0]; for(int i = 0; i < length; i++) { if(currentSum >= 0) currentSum += a[i];

LoveKoma的博客 782

【leetcode热题】乘积最大子数组

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

kiugvui的博客 1672
上一篇: 动态规划——连续子数组的最大和
下一篇: 动态规划——乘积为正数的最长连续子数组
Lingo_work
博客等级 码龄8年 12粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值