152. Maximum Product Subarray
来源:互联网 发布:小明发布永久域名2016 编辑:程序博客网 时间:2024/04/19 16:36
题意: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
.
题解: 设置两个数组,分别用来存储当前nums[i]的局部最大值和局部最小值。 最终maxp[]中最大的那个就是ans。
maxp[] -2 6 12 24 72 144*4
input -2 - 3 -4 2 3 -4
minp[] -2 -3 -24 -48 -144 -72*4
class Solution {public: int maxProduct(vector<int>& nums) { if(nums.size()==1) return nums[0]; vector<int> maxp(nums.size()); vector<int> minp(nums.size()); int maxans=nums[0]; maxp[0]=nums[0]; minp[0]=nums[0]; for(int i=1;i<nums.size();i++){ maxp[i]=max(nums[i],max(maxp[i-1]*nums[i],minp[i-1]*nums[i])); minp[i]=min(nums[i],min(maxp[i-1]*nums[i],minp[i-1]*nums[i])); maxans=max(maxans,maxp[i]); } return maxans; }};我们发现,之前的maxp[]和minp[]没什么用,可以分别用一个变量来代替。将省不少空间。
class Solution {public: int maxProduct(vector<int>& nums) { if(nums.size()==1) return nums[0]; int maxans=nums[0]; int maxp=nums[0]; int minp=nums[0]; int tmp=0; for(int i=1;i<nums.size();i++){ tmp=maxp; maxp=max(nums[i],max(maxp*nums[i],minp*nums[i])); minp=min(nums[i],min(tmp*nums[i],minp*nums[i])); maxans=max(maxans,maxp); } return maxans; }};
0 0
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- android 的一些问题
- ASP.NET MVC中错误处理方式
- 刀客建站系统安装流程
- SiderBar滑动监听
- Android 进入页面默认定位到ListView的解决方法
- 152. Maximum Product Subarray
- Javascript prototype的理解
- UGUI滑动条细节以及UGUI Atlas脚本
- Dockerfile命令介绍及实例
- 根据多个坐标点计算缩放地图的级别
- JSON 之GSON 解析
- iOS开发---获取当前日期是星期几
- Java线程池使用说明
- 【CSS3】结构性伪类选择器—target