Leetcode 152 乘积最大子序列
题目
分析
考虑到有负数的参与,会使现有的最大的变成最小的,最小的变成最大的,实际上也可以看做是一种动态规划,imax和imin分别记录的是以当前位置为结尾的,最大和最小的子序列乘积的大小。
代码
public static int maxProduct(int[] nums){
int imax=Integer.MIN_VALUE;
int imin= Integer.MAX_VALUE;
int max=Integer.MIN_VALUE;
for(int i=0;i<nums.length;i++)
{
if(nums[i]<0)
{
int temp=imax;
imax=imin;
imin=temp;
}
imax=Math.max(imax*nums[i],nums[i]);
imin=Math.min(imin*nums[i],nums[i]);
max=Math.max(max,imax);
}
return max;
}学习情况
1次

