[leetcode]Maximum Product Subarray最大子序列乘积
来源:互联网 发布:数字ip网络广播系统 编辑:程序博客网 时间:2024/05/17 22:54
题目是这样的:
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
.
直接计算所有的可能性时间是O(n^2),会超时。这个问题看上去与最大子序列和一样,但是实现中发现,乘法还需考虑正数和负数两种情况,因为它们可以互相转换然后成为最大解。
class Solution {public: int maxProduct(int A[], int n) { if(n==1) return A[0]; int ptable[n], ntable[n]; memset(ptable, 0, sizeof(ptable)); memset(ntable, 0, sizeof(ntable)); //case i=0 if(A[0]>0) { ptable[0]=A[0]; } else ntable[0]=A[0]; for(int i=1; i<n; i++) { if(A[i]<0) { if(ntable[i-1]==0) ptable[i]=0; else ptable[i]=ntable[i-1]*A[i]; if(ptable[i-1]==0) ntable[i]=A[i]; else ntable[i]=ptable[i-1]*A[i]; } else { if(ntable[i-1]==0) ntable[i]=0; else ntable[i]=ntable[i-1]*A[i]; if(ptable[i-1]==0) ptable[i]=A[i]; else ptable[i]=ptable[i-1]*A[i]; } } int max=A[0]; for(int i=0; i<n; i++) { max=std::max(ptable[i],max); } return max; }};
0 0
- [leetcode]Maximum Product Subarray最大子序列乘积
- [Lintcode]Maximum Product Subarray乘积最大子序列
- [LeetCode]Maximum Product Subarray 新题152 最大乘积子序列
- Leetcode 152 Maximum Product Subarray 子数组最大乘积
- LeetCode Maximum Product Subarray(最大子数组乘积)
- LeetCode:152. Maximum Product Subarray Java 子数组最大乘积
- 【LeetCode】152. Maximum Product Subarray最大连续子数组乘积
- [LeetCode] Maximum Product Subarray 求最大子数组乘积
- LeetCode 152. Maximum Product Subarray--连续子数组最大乘积
- 191.Maximum Product Subarray-乘积最大子序列(中等题)
- 【LeetCode-面试算法经典-Java实现】【152-Maximum Product Subarray(子数组的最大乘积)】
- LeetCode-152. Maximum Product Subarray (JAVA)(子数组的最大乘积)
- [LeetCode] Maximum Product Subarray 求连续子数组的最大乘积
- LeetCode-152:Maximum Product Subarray (乘积最大连续子数组) -- medium
- leetcode152-Maximum Product Subarray(乘积最大子数组)
- Maximum Product Subarray 乘积最大的子数组
- Array-----152. Maximum Product Subarray(最大连续子数组乘积)
- 152. Maximum Product Subarray (最大乘积子数列)
- [转]LNMP环境下的Web常见问题排查(精品)
- Linux负载均衡软件LVS之一(概念篇)
- HBase Coprocessor 之 endpiont(hbase 0.96.0)
- 普通充电器给苹果IPHONE/IPAD2充电的USB端的识别电阻的设置
- Js 弹出框口并返回值的两种常用方法
- [leetcode]Maximum Product Subarray最大子序列乘积
- Android HAL实例解析
- iPhone开发技巧之网络篇(1)--- 解析XML
- android WebView 页面刷新不了解决方法
- leetcode - Subsets II
- Spring多数据源配置
- EAS二次开发语句优化之BOTP语句
- 年轻工程师如何锻炼成高手的
- Lucene的Document