LeetCode152—Maximum Product Subarray
来源:互联网 发布:部落冲突箭塔数据 编辑:程序博客网 时间:2024/06/05 12:03
原题
原题链接
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.Subscribe to see which companies asked this question
分析
首先想到的是最大子序列和问题,动归方程如下,dp[i]表示以nums[i]结尾的局部最优:
由于乘法不同于加法的性质(加法的效果是累计的),乘法可以出现负负得正的情况,也就是说以nums[i]结尾的局部最优可能是一个很小的负数乘上一个很小的负数得到。
因此,此题需要维护两个局部变量,一个表示局部最大,一个表示局部最小。
代码
class Solution {public: int maxProduct(vector<int>& nums) { vector<int>dp_min(nums.size()); vector<int>dp_max(nums.size()); dp_min[0]=nums[0]; dp_max[0]=nums[0]; int global=nums[0]; for(int i = 1;i<nums.size();i++) { if(nums[i]>0) { dp_max[i]=max(dp_max[i-1]*nums[i],nums[i]); dp_min[i]=min(dp_min[i-1]*nums[i],nums[i]); } else { dp_max[i]=max(dp_min[i-1]*nums[i],nums[i]); dp_min[i]=min(dp_max[i-1]*nums[i],nums[i]); } global=max(global,dp_max[i]); } return global; }};
1 0
- LeetCode152—Maximum Product Subarray
- LeetCode152:Maximum Product Subarray
- LeetCode152. Maximum Product Subarray
- [LeetCode152]Maximum Product Subarray
- leetcode152. Maximum Product Subarray
- leetcode152. Maximum Product Subarray
- Leetcode152——Maximum Product Subarray
- leetcode152-Maximum Product Subarray(乘积最大子数组)
- LeetCode—Maximum Product Subarray
- LeetCode_Maximum Subarray | Maximum Product Subarray
- LeetCode——Maximum Product Subarray
- LeetCode——Maximum Product Subarray
- leetcode 152 —— Maximum Product Subarray
- Maximum Product Subarray —— Leetcode
- leetcode——Maximum Product Subarray
- LeetCode——152. Maximum Product Subarray
- Algorithms—152.Maximum Product Subarray
- Maximum Product Subarray
- SAP ABAP 字符串操作
- 数据结构实验之串一:KMP简单应用
- 获取动态生成的js元素
- 在用studio导入一个项目长时间 build 解决办法
- 上传已有项目到git服务器
- LeetCode152—Maximum Product Subarray
- Ubuntu 秘笈之命令行下管理浏览器书签
- 漫漫编程路上学到的宝贵经验!
- 第10周项目2-二叉树遍历的递归算法
- Eclipse使用工作集管理项目
- C#无限分级实现,前端WEB页面接收,后台提供层级Json数据
- 第10周项目3 -利用二叉树遍历的思想解决问题
- greenplum /postgresql建表语句
- Git常用命令总结