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;
    }
};



clock-gating整理 文章目录clock gating 理解1、latch双稳态器件常见锁存器结构SR锁存器D锁存器2、clock gating(clock low-active) latch + AND gating 电路(clock high-active)latch + OR gating 电路 clock gating 理解 1、latch 参考:https://www.cnblogs.com/IClearner/p/6443539.html 双稳态器件 稳定状态为0或1两种 举例:交叉耦合反相器 假设初始Q为1,则可 阅读详情

相关推荐

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

Maya绑定:人物绑定详细案例(创建骨骼、镜像骨骼、IK创建、IK打组、IK控制器、FK控制器、烘焙动画、导出)

m0_45877477的博客 1635

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

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

sinat_21555157的博客 304

4G LTE 与 5G 无线网络规划对比:从 BBU/RRU 到 CU/DU/AAU 的架构演进解析

本文深度解析4G LTE与5G无线网络架构的演进差异,从BBU/RRU分立式架构到CU/DU/AAU三级重构,揭示移动通信代际跃迁的技术本质。重点对比了网络规划中的覆盖能力、容量规划、传输网络等九大维度,为通信工程师提供实用的技术对照手册,助力5G网络高效部署。

weixin_32821533的博客 289

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

从零构建C++ Gerber解析器:以PCB缺陷检测为目标的实战指南

本文是一份面向PCB缺陷检测项目的实战指南,详细介绍了如何从零开始使用C++构建高性能的Gerber文件解析器。文章深入剖析了Gerber RS-274X格式,并提供了完整的开发环境搭建、核心数据结构设计、解析步骤实现以及为缺陷检测优化的具体方案,旨在帮助开发者获得对PCB制造数据的深度控制与极致性能。

weixin_29291185的博客 184

【网络与爬虫 41】TLS指纹伪造技术深度解析:ja3、ja4反检测与绕过策略

TLS指纹是现代反爬虫系统的重要检测手段,通过分析客户端TLS握手特征来识别爬虫。本文将深入解析ja3、ja4等TLS指纹技术原理,详细介绍指纹伪造和绕过策略,通过实际代码示例和工具使用,帮助开发者掌握TLS指纹反检测技术,构建更隐蔽的网络爬虫系统。

熵数实验室 1万+

leetcode Maximum Product Subarray

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

183

【零基础入门unity游戏开发——unity3D篇】unity CharacterController 3D角色控制器最详细的使用介绍,并实现俯视角、第三人称角色控制(附项目源码)

【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用但是我发现很多人还是不理解,都跑来私信问我,所以决定重新做一个更加详细且简单控制器,主要是实现俯视角和第三人称角色控制。添加一个胶囊体,添加Character Controller组件,记得删除Capsule Collider组件,因为Character Controller自带了碰撞,所以不需要Character Controller参数介绍。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5022

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

AI工具 | 每个打工人必备的15款人工智能超级工具

不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。

Vampire_2017的博客 5万+

Cesium中级开发教程之五十二:气泡弹窗

支持多种交互方式触发气泡弹窗显示,如鼠标悬停、点击地图上的特定元素(像实体、标注、模型等)。例如,当用户鼠标悬停在一个表示城市的点上时,弹出显示该城市名称、人口等信息的气泡。:依据特定的数据条件或业务逻辑触发。比如,当某个区域的气象数据达到一定阈值时,自动弹出显示相关气象预警信息的气泡。

664

[leetcode]动态规划之Maximum Product Subarray

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

crabstew的博客 278

【FDTD】仿真目录(共计 16 篇)

对于完美吸收型边界条件,有时候我们需要设置将仿真结构穿过边界条件区域,具体原因可以阅读下文。在进行 S 参数扫描时,当考虑到材料的色散特性时,我们可以如下文一样选择计算群延迟。仿真,我们需要构建仿真结构与仿真区域,对于它们的尺寸,应该遵循下文进行设定。中存在多种不同的网格类型,具体可以参考下文,这部分内容仅作了解即可。尺寸的设置问题,对于 mesh 的最小尺寸,可以参考下文。的边界条件设置也十分重要,下文中我们对边界条件进行总结。仿真中我们可以设定参与仿真的模式数量,可以参考下文。尺寸的实例,详见下文。

u011699626的博客 506

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

152. Maximum Product Subarray

152. Maximum Product Subarray

hello world 241

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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、付费专栏及课程。

余额充值