LeetCode: Maximum Product Subarray

只貼個solution,很容易看懂。簡而言之,由於是乘法,除了維護最大值,0和負數的存在需要我們維護最小值和當前值。


    int maxProduct(int A[], int n) {
    	if (n == 1){ return A[0]; }
	    int maxV = A[0];
	    int minV = A[0];
	    int result = A[0];
	    for (int i = 1; i < n; i++){
		    int tmp = maxV;
		    maxV = max(max(maxV*A[i], minV*A[i]), A[i]);
		    minV = min(min(tmp*A[i], minV*A[i]),A[i]);
		    result = max(result, maxV);
	    }
	    return result;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章