class Solution { public int maxProduct(int[] nums) { int n = nums.length; int preMin = nums[0]; // i 之前最小值 int preMax = nums[0]; // i 之前最大值 int res = nums[0]; for(int i = 1; i < n; i++) { if(nums[i] >= 0) { preMax = Math.max(preMax*nums[i],nums[i]); preMin = Math.min(preMin*nums[i],nums[i]); } else { int temp = preMax; preMax = Math.max(preMin*nums[i],nums[i]); preMin = Math.min(temp*nums[i],nums[i]); } res = Math.max(res,preMax); } return res; } }