Leetcode 152.乘机最大子序列
乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
示例 1:
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
解题思路:乘法与加法最大差别在于,当前元素的符号具有全局性的作用。
如果当前元素为负,那么连乘到上个元素的最大乘积,再乘以当前元素,就变成负数,甚至可能成为最小乘积。
同样,连乘到上个元素的最小乘积如为负,再乘以当前元素,就变成正数,甚至可能成为最大乘积。
因此使用动态规划的方法:
记maxLast/minLast为连乘到上个元素的最大/小乘积
记maxCur/minCur为连乘到当前元素的最大/小乘积
记maxAll为全局最大乘积
1 class Solution{ 2 public: 3 int maxProduct(vector<int>& nums){ 4 if (nums.empty()){ 5 return 0; 6 } 7 if (nums.size() == 1){ 8 return nums[0]; 9 } 10 int maxAll = nums[0];//global maximum 11 int maxLast = nums[0];//maximum including last element 12 int maxCur;//maximum including current element 13 int minLast = nums[0];//minumum including current element 14 int minCur;//minimum including last element 15 for (int i = 1; i<nums.size(); i++){ 16 maxCur = max(nums[i], max(maxLast*nums[i], minLast*nums[i])); 17 minCur = min(nums[i], min(maxLast*nums[i], minLast*nums[i])); 18 maxLast = maxCur; 19 minLast = minCur; 20 maxAll = max(maxAll, maxCur); 21 } 22 return maxAll; 23 } 24 };
转载于:https://www.cnblogs.com/kexinxin/p/10196010.html
Leetcode 152.乘机最大子序列相关推荐
- Java实现 LeetCode 152 乘积最大子序列
152. 乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] ...
- LeetCode 152. 乘积最大子序列(DP)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1:输入: [2,3,-2,4] 输出: 6 解 ...
- Leetcode 152. 乘积最大子序列 解题思路及C++实现
解题思路: 求乘积最大的子序列,不同于和最大的子序列,两个负数相乘是会得到正数的,所以在遍历数组nums时,需要存储最大和最小的子序列乘积.然后每遍历一个元素,更新一次. class Solution ...
- leetcode 152 乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示例 2 ...
- LeetCode 152. 乘积最大子序列(动态规划)
题目描述 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. ...
- leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别
这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...
- leetcode 算法-乘积最大子序列-152
leetcode 算法-乘积最大子序列 leetcode 传送门 题目 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2, ...
- 动态规划——乘积最大子数组(Leetcode 152)
题目选自Leetcode 152. 乘积最大子数组 题目描述: 解题思路: 解题代码: class Solution { public:int maxProduct(vector<int> ...
- 刻意练习:LeetCode实战 -- Task26.判断子序列
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
最新文章
- 调侃 -- 刚入职时的单纯
- R语言R原生及可视化包ggplot2绘制并排的箱图实战(Side-by-Side Boxplots)
- 明明白白学C#第0章准备工作
- 随机森林算法的随机性_理解随机森林算法的图形指南
- spring mvc学习(7):springmvc学习笔记(常用注解)
- 2021年中国在线旅游直播专题分析
- linux关于权限的案例,16. Linux权限管理案例1 - 警察与土匪
- ApacheCN 2019.4~7 总结
- MySQL 入门(十一)—— 运算符
- Web安全攻防:渗透测试实战指南
- 局域网传输文件_如何“互传文件”?简单几步,方便快捷
- 最简单的python爬虫案例,适合入门学习
- 【qcom msm8953 android712】rtc 调试分析续
- 作为一只爬虫,如何科学有效地处理短信验证码?
- 1.21 同级比较 倒装句 否定Neither
- 张朝阳陈天桥牵手周鸿祎 马化腾仗势欺人孤独求败
- 用SQL分析北京周边城市:天津以及保定房价
- 机器学习实战(入门级) ------ Kaggle 泰坦尼克号幸存者预测 (随机森林,KNN,SVM)
- html自定义指针,如何自定义鼠标指针 怎样在wpf中自定义鼠标指针
- 使用fastdb的感受
热门文章
- MacBook 推出移动硬盘时总是提示有程序在使用它,如何解决?
- nginx fastcgi python_Nginx + webpy 和FastCGI搭建webpy环境
- mysql 上一篇_mysql取上一篇和下一篇的查询
- 添加几个手机联系人_One UI 3.0: 更细腻、更好用,这才是手机系统该有的样子
- 小程序triggerevent 传参_微信小程序——无限递归的层次列表
- 【音视频安卓开发 (四)】AndroidStudio项目配置权限、jni库路径、ABI
- 土木计算机2级,请教各位,我是学土木的,考计算机二级的哪个比较好?
- oracle定时关闭job,Oracle 定时JOB
- C什么k什么_K线图基础知识丨什么是K线散兵坑形态?K线散兵坑形态的操作与案例详解...
- 飞畅科技-工业以太网交换机的差异性