[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
.
Array Dynamic Programming
参考 http://www.cnblogs.com/diegodu/p/4589796.html
class Solution { public: int maxProduct(vector<int>& arr) { if(arr.size() == 0) return 0; int minVal = arr[0]; int maxVal = arr[0]; int rtn = arr[0]; int tmpMax = 0; int tmpMin = 0; for(int i = 1; i < arr.size(); i++) { //cout << "max\t" << maxVal << endl; //cout << "min\t" << minVal << endl; tmpMax = max(maxVal * arr[i], minVal * arr[i]); tmpMin = min(maxVal * arr[i], minVal * arr[i]); maxVal = max(tmpMax, arr[i]); minVal = min(tmpMin, arr[i]); rtn = max(rtn, maxVal); } return rtn; } };