LeetCode 152. Maximum Product Subarray
来源:互联网 发布:贴吧爆吧软件安卓 编辑:程序博客网 时间:2024/04/28 08: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
.
题目就是太求一个连续的子数组,其乘积最大。
与前面的最大连续子数组的和不同,乘积就需要考虑到负数与负数相乘的情形。
如果前面得到一个较小的负数,和后面一个较大的负数相乘,得到的反而是一个较大的数。
所以,我们在处理乘法的时候,不仅需要维护一个局部最大值,还需要维护一个局部最小值。因此对应的状态转移方程如下:
temp = maxLocal //由于第一行中maxLocal很可能变化,在这里做一个拷贝,以便求minLocalmaxLocal[i+1] = max(max(maxLocal[i]*nums[i],nums[i]),minLocal*nums[i])minLocal[i+1] = min(min(temp*nums[i],nums[i]),minLocal*nums[i])global = max(global,maxLocal)
AC代码如下:
class Solution {public: int maxProduct(vector<int>& nums) { int maxLocal = nums[0]; int minLocal = nums[0]; int global = nums[0]; for(int i = 1;i < nums.size();i++) { int temp = maxLocal; maxLocal = max(max(maxLocal*nums[i],nums[i]),minLocal*nums[i]); minLocal = min(min(temp*nums[i],nums[i]),minLocal*nums[i]); global = max(global,maxLocal); } return global; }};
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
- PHP假期复习(一)----编程入门
- 多重背包的两种解决方法(poj1276)
- 【随笔】
- 华为OJ——进制转换
- JFinal分页paginate
- LeetCode 152. Maximum Product Subarray
- 制作唱片
- 数据结构实验之查找六:顺序查找
- PHP假期复习(二)----函数
- Android开发之单元测试框架Robolectric(一)
- 二分匹配小结
- android 一些网络异常
- Shader特效——实现“放大镜/缩小镜”【GLSL】
- bind()函数