同求最大和的思路类似,遍历一遍计算经过每个点的可能最大值....唯一的区别在于乘法有可能出现负负得正的情况。因而我们可以记录下每个点的最大值和最小值以供计算下一个点的最大值和最小值。
public class Solution {
public int maxProduct(int[] A) {
int len = A.length;
if(len==0)
{
return 0;
}
int MAX = A[0];
int MIN = A[0];
int res = A[0];
for(int i=1;i<len;i++)
{
int a = MAX*A[i];
int b = MIN*A[i];
MAX = Math.max(a,Math.max(b,A[i]));
MIN = Math.min(a,Math.min(b,A[i]));
if(MAX>res)
{
res = MAX;
}
}
return res;
}
}