給定乙個double型別的陣列arr,其中的元素可正可負可0,返回子陣列累乘的最大乘積。例如arr=[-2.5,4,0,3,0.5,8,-1],子陣列[3,0.5,8]累乘可以獲得最大的乘積12,所以返回12。
子陣列問題一般就直接dp做就很快,那麼這裡最普通的dp做法應該就是二維表,這道題顯然不需要全遍歷,因為a[i[[j] 和 a[j][i] 是一樣的,所以我們需要o(n^2/2)的遍歷,即三角遍歷,而非正方形遍歷。那麼輔助空間上,這道題是逐行求解,其實輔助空間可以壓縮到o(1)級別,根本就不需要建二維表。
看一下子結構:從 arr[i] 到 arr[j] 的乘積:a[i][j] = a[i][j-1] * arr[j];//arr是原始陣列,a是dp陣列
public class solution
}return max;
}}
乘積最大子陣列
leetcode 乘積最大子陣列 一開始我並沒有用dp 而是分情況討論的,即通過0將資料分為幾段,因為含有0的必定會使結果為0 然後就是考慮負數 在所分的每段裡計算乘積,如果負數個數為奇數,將最後出現的那段除掉,然後輸出最大值再比較 非常長 但是可以跑過 長的我自己都不想看,沒臉看,看不明白啊,娘的...
乘積最大子陣列
給你乙個整數陣列 nums 請你找出陣列中乘積最大的連續子陣列 該子陣列中至少包含乙個數字 並返回該子陣列所對應的乘積。示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,3,2 輸出 12 解釋 子陣列 2,3,2 有最大乘積 12。對於每個元素,我...
最大子陣列乘積
題目鏈結 動態規劃的典型題目,這道題實際上是最大連續子陣列和的乙個高階版本。這道題的難點在於,這裡要同時構建兩個輔助陣列。f n f n f n 代表從區間 0,n 0,n 0,n 內,以n為結尾的最大乘積。與之相對的,g n g n g n 代表從區間 0,n 0,n 0,n 內,以n為結尾的最小...