LeetCode Maximum Subarray Maximum Product Subarray DP问题

如何找到区间数组的最大和?最大积? 给定一个整数数组,需要找一个子数组,使得该子数组的和是所有的子数组里边最大的,或者该子数组相乘的积是所有的子数组中最大的。 先看前者,求和具有最优子结构,也就是说前n个元素的最大和子区间和前n+1个元素的最大和子区间是有关系的,如果我们用dp[k]记录前n个数组元素中的最大和,并且规定这个子区间的最后一个元素必须是n,那么当我们计算的数组长度扩展为k+1的时候就需要考量dp[k]了,如果 阅读详情

Maximum Subarray

题目:

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.

思想:

            这是个典型的动态规划的问题,求的子序列的最大值。在每一步,我们可以维护两个变量。局部最优(必须包含当前元素的最优的解):用DP[N]数组 表示以下标N结尾元素的最大值。全局最大值(就是到当前元素为止的最优解):用一个gloabl表示 找到DP[N]数组中的最大值。

DP[I] = Max(DP[I-1]+nums[i],nums[i]);//DP的动态转移方程 每遍历一遍DP[I]可以判断gloabl的最大值

可以看到DP[i]的转移是与DP[I-1]前一个元素有关 那么DP可以使用滚动数组进行优化 用一个遍历Max_local表示即可

时间O(N) 空间O(1)

AC代码:

class Solution {
public:
    int max(int a,int b){return a>b?a:b;};
    int min(int a,int b){return a<b?a:b;};
    int maxSubArray(vector<int>& nums) {
        int len =nums.size();
        if(len<=0) return 0;
        int global = nums[0];
        int max_local = nums[0];
        for(int i=1;i<len;i++){
            max_local = max(max_local+nums[i],nums[i]);
            if(global<max_local) global = max_local;
        }
        return global;
    }
};

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 product = 6

思想:

这个问题和上面一题类似,也是用动态规划求解,不同的是这题是求子序列乘法的最大值。不像上一题累加结果只要是正的一定是递增,而乘法中可能现在看起来是负的,而后面跟个负数相乘就会得到最大的乘积。其实只需要3定义3个变量,一个局部最小值,一个局部最大值,一个全局最大值就能线性的时间完成最大值的求解

时间O(N) 空间O(1)

代码:

class Solution {
public:
    int max(int a,int b){return a>b?a:b;};
    int min(int a,int b){return a<b?a:b;};
    int maxProduct(vector<int>& nums) {
        int len = nums.size();
        if(len<=0) return -1;
        int max_local = nums[0];//局部最大值,以最后一个元素结尾
        int min_local = nums[0];//局部最小值,以最后一个元素结尾
        int gloabl = nums[0];//全局最大值
        for(int i=1;i<len;i++){
            //cout<<max_local<<" "<<min_local<<endl;
            int premax = max_local;
            max_local = max(max(max_local*nums[i],nums[i]),min_local*nums[i]);
            min_local = min(min(min_local*nums[i],nums[i]),premax*nums[i]);
            if(max_local>gloabl) gloabl = max_local;
        }
        return gloabl;
    }
};



OpenClaw 开机自启配置:Windows/macOS/Linux 全平台技术指南 OpenClaw 开机自启全平台配置指南 本文提供了在Windows、macOS和Linux系统上配置OpenClaw开机自启的完整技术方案。主要内容包括: Windows配置:提供三种方法(Windows服务、任务计划程序、启动文件夹),详细说明服务脚本创建、服务注册和测试流程 macOS配置:使用LaunchAgent实现开机自启,包含配置文件创建和加载方法 Linux配置:通过systemd服务实现,包括服务单元文件创建和启用步骤 系统要求:明确硬件(64位CPU/4GB内存)和软件(各平台操作系统版 阅读详情

相关推荐

海康摄像头RTSP流延迟优化实战:从VLC到OpenCV的5种方案对比与性能调优

本文针对海康摄像头RTSP流的高延迟问题,深入剖析了延迟根源,并系统对比了从VLC、OpenCV到海康官方SDK、FFmpeg及硬件加速等五种主流方案的性能表现。重点分享了缓冲区设置、协议优化、多线程架构与硬件解码等实战调优技巧,旨在帮助开发者将视频流延迟从秒级优化至毫秒级,满足工业检测、安防监控等高实时性场景需求。

hh234的博客 808

DP-求子数列最大和/积-MaxEndHere

@“全是套路”-leetcode总结 DP-求子数列最大和/积-MaxEndHere 这是我写的第一篇leetcode的数据结构算法练习的总结。各个论坛上有很多总结leetcode的解法的博客,但很多是按照作者的理解分类的。这里我按照我自己的思路总结,通过写可以梳理一遍,让自己思路更清晰。 有些题,表面看上去不一样,仔细想想,就会觉得,“脱了马甲我还认得你!” 今天是DP动态规划问题的一个子类,就是在某个点,若之前的累积结果已经不能再产生积极的contribution的情况下,要把之前的舍弃。 53和121

sinat_21555157的博客 304

【sap2000】部分模型通过.s2k文件合并模型generating a global model through partial models by .s2k text file

现在需要通过选项File → Import → SAP2000 .s2k Text File → Add to existing model(如果使用其中一个部分模型作为基础)或New model(如果使用新文件)添加部分模型,并使用以下导入选项。模型A(阶段1/5) Model A (Phase 1/5)模型B(阶段2/5) Model B (Phase 2/5)模型C(阶段3/5) Model C (Phase 3/5)模型E(阶段5/5) Model E (Phase 5/5)

hmywillstronger的博客 1752

LeetCode 152. Maximum Product Subarray(动态规划)

题目来源:https://leetcode.com/problems/maximum-product-subarray/ 问题描述 152.Maximum Product Subarray Medium Given an integer arraynums, find the contiguous subarray within an array (containing at leas...

da_kao_la的博客 308

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

Plant Simulation新手入门:从零开始搭建工厂布局仿真模型(附完整代码)

本文为Plant Simulation新手提供了一个从零开始搭建工厂布局仿真模型的完整实战教程。通过一个玩具工厂车间布局优化的具体案例,详细讲解了从数据准备、模型构建、核心逻辑编程到连接遗传算法进行自动优化的全流程,并附有完整代码示例,帮助读者快速掌握这一工业仿真软件的核心应用。

metal的博客 554

leetcode Maximum Product Subarray

之前好像做过这样的,以前是加法,现在是乘法。 一开始我也傻逼得用n方的试了下,肯定是TLE的。 那显然就是可以O(n)解决了 用两个dp数组,一个存最大值,一个存最小值,因为可能是负数再乘以负数就很大了,所以每次更新需要借助最小值一同更新最大值。最后遍历一边dp大的数组就有答案了。 class Solution { public: int maxProduct(i...

183

Unity 2022打包Android APK:手把手教你创建和配置第一个签名Keystore(避坑指南)

本文详细介绍了Unity 2022打包Android APK时创建和配置签名Keystore的全流程,包括环境准备、Keystore创建、高级配置避坑指南以及签名验证与故障排查。特别强调了Android应用签名的重要性及安全维护策略,帮助开发者避免常见错误,确保应用顺利发布。

weixin_27379781的博客 241

LeetCode 53/152 Maximum Subarray/Maximum Product Subarray---DP **

题目:Maximum Subarray Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [−2,1,−3,4,−1,2,1,−5,4], the contiguo

小村长技术blog 2121

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

shuyisuisuinian的博客 2万+

某智能物流无人值守系统 ExportReport SQL注入漏洞复现

某智能物流无人值守系统 ExportReport存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。

0xSec 819

[leetcode]动态规划之Maximum Product Subarray

动态规划之Maximum Product Subarray题目思考类型归类代码 题目 leetcode入口 思考 特殊在于,数组元素可能是0或者是负数。 当遇到负数的时候,最大值和最小值间会出现翻转, 即:最大值会变成最小值,最小值会变成最大值 维护两个数组 dpmin[i]:存储以元素[i]为结尾的连续一段的最大值 dpmax[i]:存储以元素[i]为结尾的连续一段的最小值 每次遍历都要 res...

crabstew的博客 278

configure: error: no acceptable C compiler found in $PATH解决方案

本文主要介绍了configure: error: no acceptable C compiler found in $PATH解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 4万+

LeetCode Maximum Product Subarray

题意:给定一个int,求解字串的最大product 解法:dp咯 因为只是一个求解字串的product,只要考虑正负和零,当前的max[i]只和三个有关系,A[i],A[i]*max[i-1]以及A[i]*min[i-1],那么这样我们不妨同时维护两个dp数组,max和min,分别表示以A[i]结尾的字串中最大值和最小值。状态转移方程如下 max[i] = max( A[i], A[i]*m

miss_snow_m的专栏 351

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode 152 Maximum Product Subarray

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] has the

weixin_43796689的博客 245

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

152. Maximum Product Subarray

152. Maximum Product Subarray

hello world 241

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

leetcode 53. Maximum Subarray 、152. Maximum Product Subarray

53. Maximum Subarray 之前的值小于0就不加了。dp[i]表示以i结尾当前的最大和,所以需要用一个变量保存最大值。 动态规划的方法: class Solution { public: int maxSubArray(vector<int>& nums) { vector<int> dp(nums.size(...

weixin_30707875的博客 130

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

xingyun121x的专栏 286

【leetcode每日刷题】152. Maximum Product Subarray

https://leetcode.com/problems/maximum-product-subarray/ 最大乘积子数组 # 解法一,使用两个动态数组 def maxProduct(self, nums): """ :type nums: List[int] :rtype: int """ res = nu...

菜菜鸟的博客 258

leetcode题解:第152题Maximum Product Subarray

题目 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] Ou...

chenf1999的博客 220

Leetcode152. Maximum Product Subarray

找一个连续的子数组,使得连乘起来最大。

magic_jiayu的博客 204

leetcode152. Maximum Product Subarray

题目:题目链接 题意:从一个数组中找到连续的子数组,其所有元素的积最大用MPS表示。 思路:dp。 先看数据量,2*10^4 所以O(n^2)肯定不行。那就是一维dp了。开始我想着设dp[i]为从0到i的MPS,但状态转移方程一直写不出来。看了看提示,设dp[i]为以i结尾的MPS。那么就很好根据前面推出后一个了。要注意因为是积,所以哪怕前面是负数也有可能再与一个负数相乘为正。所以要保存最大和最小值。 具体如下: 设max_product[i]为以i结尾的最大连续子数组积,min_product[i]为以

欲买桂花同载酒 235

[leetcode] 152. Maximum Product Subarray

Description 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...

Learning from the mistakes 193

10.3.1 (python) 动态规划数组类LeetCode题目 —— Minimum Path Sum & Triangle & Maximum Product Subarray

这一节的几篇,都是解析动态规划数组类题目,相对于后面的字符串类问题来说,还是比较容易的。 首先来看比较几个简单的DP题目,巩固一下前面所学套路。 64.Minimum Path Sum Given amxngrid filled with non-negative numbers, find a path from top left to bottom right whichmi...

xutiantian1412的博客 424

[LeetCode] Maximum Product Subarray

给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 引用自 https://blog.youkuaiyun.com/whuwangyi/article/details/39577455 使用DP,由于负数的存在,需要同时保存当前最大值和当前最小值,所以需要维护两个DP表,...

by_qmr的博客 187

152 - Maximum Product Subarray

152 - Maximum Product Subarray

uso的博客 149
上一篇: LeetCode:Subsets I II
下一篇: LeetCode:Majority Element I II 投票算法
Mike_CSU
博客等级 码龄10年 6粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值