Leetcode 152. Maximum Product Subarray
来源:互联网 发布:甘肃网络机柜 编辑:程序博客网 时间:2024/06/11 04:25
Leetcode 152. Maximum Product Subarray
source url
题目描述
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.
输入:数组
输出:乘积最大子数组
思路
动态规划:如题目所示,输入数组为整型,即只需考虑两个特殊点,遇到负数的时候以及遇到0的时候。考虑两个数组,p[i]
表示以下标i结尾的子数组最大的正乘积,n[i]
表示以下标i结尾的子数组最小的负乘积。
即p[i]>=0,n[i]<=0
存在下列状态转移方程
状态转移方程:
那么
代码
class Solution {public: int maxProduct(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return nums[0]; int p[nums.size()]={0}; int n[nums.size()]={0}; p[0] = nums[0]>0?nums[0]:0; n[0] = nums[0]<0?nums[0]:0; for(int i=1;i<nums.size();i++){ if(nums[i]>0&&p[i-1]>0){ p[i] = p[i-1]*nums[i]; }else if(nums[i]<0&&n[i-1]<0){ p[i] = n[i-1]*nums[i]; }else{ p[i] = nums[i]>0?nums[i]:0; } if(nums[i]>0&&n[i-1]<0){ n[i] = n[i-1]*nums[i]; }else if(nums[i]<0&&p[i-1]>0){ n[i] = p[i-1]*nums[i]; }else{ n[i] = nums[i]<0?nums[i]:0; } } int maxp = p[0]; for(int i =0;i<nums.size();i++){ maxp = max(maxp,p[i]); } return maxp; }};
0 0
- LeetCode 152. Maximum Product Subarray
- [leetcode] 152.Maximum Product Subarray
- [LeetCode]152. Maximum Product Subarray
- leetcode:152. Maximum Product Subarray
- leetcode 152. Maximum Product Subarray
- 152. Maximum Product Subarray LeetCode
- [leetcode] 152. Maximum Product Subarray
- LeetCode *** 152. Maximum Product Subarray
- LeetCode 152. Maximum Product Subarray
- leetcode.152. Maximum Product Subarray
- LeetCode-152.Maximum Product Subarray
- LeetCode - 152. Maximum Product Subarray
- [Leetcode]152. Maximum Product Subarray
- LeetCode 152. Maximum Product Subarray
- leetcode:152. Maximum Product Subarray
- [leetcode]152. Maximum Product Subarray
- LeetCode 152. Maximum Product Subarray
- [LeetCode] 152. Maximum Product Subarray
- DirectShow 链接错误 CPosPassThru 解决方法
- MFC 控件显示层次调整(叠放次序)和绘制控制问题
- 费马小定理
- P1504 积木城堡
- vmware workstation 12 密钥
- Leetcode 152. Maximum Product Subarray
- MFC network address control使用
- C char/wchar_t之间的互转 多字节(MultiByte)和宽字符(Unicode)互转
- C# MD5 加密 string->string
- Project : error PRJ0003 : Error spawning 'cmd.exe' 解决
- MFC Dialog 添加菜单栏
- vim复制粘贴行
- C分割字符串 sscanf vs strtok
- 数组元素的指针 vs 数组的指针