/**
* 法一(动态规划)
*
* @param nums
* @return
*/publicintmaxProduct(int[] nums){int ans =Integer.MIN_VALUE, max =1, min =1;for(int i =0; i < nums.length; i++){if(nums[i]<0){// 如果nums[i]是负数,那么会导致最大变最小,最小变最大,因此交换二者的值int tmp = max;
max = min;
min = tmp;}
max =Math.max(max * nums[i], nums[i]);
min =Math.min(min * nums[i], nums[i]);
ans =Math.max(ans, max);}return ans;}