首页 > 代码库 > LeetCode Maximum Product Subarray

LeetCode Maximum Product Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest product.

For example, given the array [2,3,-2,4],
the contiguous subarray [2,3] has the largest product = 6.

 

minLast[i] 表示以A[i]结尾的最小值,maxLast[i]表示以A[i]结尾的最大值。

minLast[i] = Math.min(A[i], Math.min(minLast[i - 1]*A[i], maxLast[i - 1]*A[i]));
maxLast[i] = Math.max(A[i], Math.max(maxLast[i - 1]*A[i], minLast[i - 1]*A[i]));

 

 1 public class Solution { 2     public int maxProduct(int[] A) { 3         int length = A.length; 4         if (length == 0) { 5             return 0; 6         } 7         int[] minLast = new int[length]; 8         int[] maxLast = new int[length]; 9         minLast[0] = A[0];10         maxLast[0] = A[0];11         int res = Integer.MIN_VALUE;12         for (int i = 1; i <length ; i++) {13             minLast[i] = Math.min(A[i], Math.min(minLast[i - 1]*A[i], maxLast[i - 1]*A[i]));14             maxLast[i] = Math.max(A[i], Math.max(maxLast[i - 1]*A[i], minLast[i - 1]*A[i]));15         }16         for (int i : maxLast) {17             if (i>res) res = i;18         }19         return res;20     }21 }

 

LeetCode Maximum Product Subarray