package leetcode; public class demo_152 { public int maxProduct(int[] nums) { int[] maxdp=new int[nums.length]; int[] mindp=new int[nums.length]; maxdp[0]=nums[0]; mindp[0]=nums[0]; for(int i=1;i<nums.length;i++) { //大的正数相乘就越大 maxdp[i]=Math.max(maxdp[i-1]*nums[i], Math.max(nums[i], mindp[i-1]*nums[i])); //两个越小的负数相乘的积也越大 mindp[i]=Math.min(mindp[i-1]*nums[i], Math.min(nums[i], maxdp[i-1]*nums[i])); } int max=maxdp[0]; for(int m:maxdp) { if(m>max) { max=m; } } System.out.println(max); return max; } public static void main(String[] args) { // TODO Auto-generated method stub demo_152 d152=new demo_152(); int[] nums= {2,3,-2,4}; d152.maxProduct(nums); } }
原文:https://www.cnblogs.com/Yshun/p/15055313.html