最值问题的第二种思路,保存局部最优(包含该元素的),更新全局最优
两个局部变量。求Product,那么全局最优可能在上次的局部最大和局部最小中产生。
public class Solution {
public int maxProduct(int[] A) {
int max = A[0];
int localMax = A[0];
int localMin = A[0];
for (int i = 1; i < A.length; i++) {
int temp = localMax;
// max: A[i], A[i]*localMax, A[i]*localmin
localMax = Math.max(Math.max(A[i], localMax*A[i]), localMin* A[i]);
localMin = Math.min(Math.min(A[i], localMin*A[i]), temp * A[i]);
max = Math.max(max, localMax);
}
return max;
}
}