152. 乘积最大子序列
链接:https://leetcode-cn.com/problems/maximum-product-subarray/
题解:https://leetcode-cn.com/problems/maximum-product-subarray/solution/dong-tai-gui-hua-li-jie-wu-hou-xiao-xing-by-liweiw/
nums[i] 的正负和之前的状态值(正负)就产生了联系,由此关系写出状态转移方程:
当 nums[i] > 0 时,由于是乘积关系:最大值乘以正数依然是最大值;最小值乘以同一个正数依然是最小值;
当 nums[i] < 0 时,依然是由于乘积关系:最大值乘以负数变成了最小值;最小值乘以同一个负数变成最大值;
当 nums[i] = 0 的时候,由于 nums[i] 必须被选取,最大值和最小值都变成 0 ,合并到上面任意一种情况均成立。
class Solution {
public:int maxProduct(vector<int>& nums) {int size = nums.size();int res = INT_MIN, imax = 1, imin = 1; for (int i = 0; i < size; ++i) {if (nums[i] < 0) swap(imax, imin);imax = max(imax * nums[i], nums[i]);imin = min(imin * nums[i], nums[i]);res = max(res, imax);}return res;}
};
时间复杂度:O(n)
imax表示以当前节点为终结节点的最大连续子序列乘积
imin表示以当前节点为终结节点的最小连续子序列乘积
152. 乘积最大子序列相关推荐
- leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别
这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...
- Java实现 LeetCode 152 乘积最大子序列
152. 乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] ...
- Leetcode 152. 乘积最大子序列 解题思路及C++实现
解题思路: 求乘积最大的子序列,不同于和最大的子序列,两个负数相乘是会得到正数的,所以在遍历数组nums时,需要存储最大和最小的子序列乘积.然后每遍历一个元素,更新一次. class Solution ...
- leetcode 152 乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示例 2 ...
- LeetCode 152. 乘积最大子序列(DP)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1:输入: [2,3,-2,4] 输出: 6 解 ...
- LeetCode 152. 乘积最大子序列(动态规划)
题目描述 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. ...
- 【Leetocde | 24 】152. 乘积最大子序列
这道题最直接的方法就是用DP来做,而且要用两个dp数组,其中f[i]表示子数组[0, i]范围内并且一定包含nums[i]数字的最大子数组乘积,g[i]表示子数组[0, i]范围内并且一定包含nums ...
- leetcode 算法-乘积最大子序列-152
leetcode 算法-乘积最大子序列 leetcode 传送门 题目 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2, ...
- Leetcode 152.乘机最大子序列
乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 ...
最新文章
- wfs.js windows用法
- 软件测试技术lab2——Selenium上机实验
- .NET Core 3.0 Preview 9 发布
- 【机器视觉】 write_measure算子
- 顺序表查找+折半查找(二级)
- 倒立摆自动起摆_今天起,中山街坊可以去唱K、游泳、看电影、摆喜酒了!
- request mysql 接口_TP5接口开发
- HTML+CSS+JS实现 ❤️感谢关注3D文字动画特效❤️
- 用Grafana为Elasticsearch做日志分析
- 表单提交数据丢失的问题
- 离婚算法:说不清的感情对错,但算得清的财产分割
- linux命令(一)查看进程的线程数top,ps
- 如何让隐藏在大数据背后的价值发挥出来?
- linux openssh 升级最新版本
- RPM是RedHat Package Manager(RedHat软件包管理工具)
- 围观Razavi和Sansen打架——电流并联反馈
- 第二次团队作业 -- 预则立他山之石
- 帝国CMS采集-只需输入关键词的帝国CMS采集插件
- Pina Colada Song现实版
- 如何用数据分析的概念制作简单Excel报表?