/*
思路: 动态规划做
因为数字相乘 有负负得正的特点 所以 需要考虑到 【-2,1,-3】这种情况
解决此问题的方法是 建立三个变量 最大 最小 和结果 每次循环都找到max * numsi, min * numsi, numsi 这三个数中最大的赋给max, 最小的赋给min; 再把max和result中最大的赋给result就行了;
*/
class Solution {
public int maxProduct(int[] nums) {
if(nums == null || nums.length == 0) return 0;
int min = nums[0];
int max = nums[0];
int result = nums[0];
for(int i = 1; i < nums.length; i++) {
int tempMax = max;
int tempMin = min;
max = Math.max(Math.max(tempMax * nums[i], tempMin * nums[i]), nums[i]);
min = Math.min(Math.min(tempMax * nums[i], tempMin * nums[i]), nums[i]);
result = Math.max(max, result);
}
return result;
}
}