[LeetCode] Maximum Product Subarray 解题思路
来源:互联网 发布:最好的国外免费php空间 编辑:程序博客网 时间:2024/06/05 04:08
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
.
[解题思路]
问题:求解乘积最大的连续子数组。这道和 Maximum Subarray相似。
将原问题转换为:第一步,求 n 个分别以 i ( 0 -> n-1 ) 结尾的 乘积最大(乘积最小)的连续子数组。第二步,找出第一步中最大值的便是原问题的解。
由于乘法具有 正正得正,正负得负,负负得正的性质,所以需要记录乘积最大、乘积最小两种情况。
max[i] = max( max[i-1]*nums[i], min[i-1]*nums[i], nums[i] );
min[i] = max( max[i-1]*nums[i], min[i-1]*nums[i], nums[i] );
代码实现如下:
int maxProduct(vector<int>& nums) { if (nums.size() == 0){ return 0; } vector<int> maxV(nums.size(), 0); vector<int> minV(nums.size(), 0); maxV[0] = nums[0]; minV[0] = nums[0]; for (int i = 1; i < nums.size(); i++) { maxV[i] = max(maxV[i-1]*nums[i], minV[i-1]*nums[i], nums[i]); minV[i] = min(maxV[i-1]*nums[i], minV[i-1]*nums[i], nums[i]); } int max = maxV[0]; for (int i = 0 ; i < maxV.size(); i++) { if (maxV[i] > max) { max = maxV[i]; } } return max; }
参考资料:
[LeetCode] Maximum Product Subarray : http://bangbingsyb.blogspot.com/2014/11/leetcode-maximum-product-subarray.html
0 0
- [LeetCode] Maximum Product Subarray 解题思路
- [LeetCode] Maximum Subarray 解题思路
- LeetCode Maximum Product Subarray 解题报告
- LeetCode 解题报告 Maximum Product Subarray
- [leetcode] 152. Maximum Product Subarray 解题报告
- LeetCode 152. Maximum Product Subarray 解题报告
- leetcode解题方案--152--Maximum Product Subarray
- 53.Maximum Subarray | LeetCode 解题思路
- Maximum Product Subarray 【LeetCode】
- [LeetCode] Maximum Product Subarray
- leetcode-Maximum Product Subarray
- Maximum Product Subarray -- LeetCode
- LeetCode-Maximum Product Subarray
- [LeetCode]Maximum Product Subarray
- [LeetCode]Maximum Product Subarray
- 【LeetCode】Maximum Product Subarray
- leetcode:Maximum Product Subarray
- leetcode: Maximum Product Subarray
- linux注意事项
- Java Thread Programming -- 目录
- androidStudio 自定义快捷代码的快捷方式
- Exception处理详解[转]
- 结构体定义 typedef struct 用法详解和用法小结 http://blog.sina.com.cn/s/blog_4fdabc820100fsxu.html
- [LeetCode] Maximum Product Subarray 解题思路
- 含有投票故障组的磁盘组存储常规文件
- LeetCode 118 : Pascal's Triangle (Java)
- Java基础——Java笔记——Eclipse快捷键总结
- opencv 视屏播放并控制
- oj 2701题与7无关的数
- AXI-Stream总线知识
- 使用pyinstaller打包python为exe文件
- CTime转换