LeetCode-152-乘积最大子数组

思路
这道题和 LeetCode-053-最大子序和 有点相似,同样采用动态规划,不过要考虑负负得正,因此需要同时维护一个fmin

代码
class Solution {
public int maxProduct(int[] nums) {
int maxF=nums[0],minF=nums[0],ans=nums[0];
for(int i=1;i<nums.length;i++){
int mx=maxF,mn=minF,num=nums[i];
maxF=Math.max(Math.max(mx*num,mn*num),num);//更新当前点最大值
minF=Math.min(Math.min(mx*num,mn*num),num);//更新当前点最小值
ans=Math.max(maxF,ans);//更新最大值
}
return ans;
}
}
本文解析了LeetCode题目152乘积最大子数组的动态规划解决方案,重点在于处理负数情况并维护最大值和最小值的双重状态。通过实例代码展示了如何利用Math.max和Math.min函数更新状态并找到最终的最大乘积。
744

被折叠的 条评论
为什么被折叠?



