152 乘積最大子串行

2021-09-24 17:15:25 字數 468 閱讀 3683

因為有負數和0的存在,使問題變得複雜了不少。

用dp來做,而且要用兩個dp陣列,其中

(1)f[i]表示子陣列[0, i]範圍內並且一定包含nums[i]數字的最大子陣列乘積,

(2)g[i]表示子陣列[0, i]範圍內並且一定包含nums[i]數字的最小子陣列乘積,

(3)初始化時f[0]和g[0]都初始化為nums[0],其餘都初始化為0。

(4)那麼從陣列的第二個數字開始遍歷,那麼此時的最大值和最小值只會在這三個數字之間產生,即f[i-1]*nums[i],g[i-1]*nums[i],和nums[i]。所以我們用三者中的最大值來更新f[i],用最小值來更新g[i],

(5)然後用f[i]來更新結果res即可,由於最終的結果不一定會包括nums[n-1]這個數字,所以f[n-1]不一定是最終解,不斷更新的結果res才是。

152 乘積最大子串行

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。記錄每一處為止的列表乘積最大最小值,後一處乘積的...

152 乘積最大子串行

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。如果要求不連續,把所有大於 0 的數字拿出來乘積...

152 乘積最大子串行

題目 給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。動態規劃 defmaxproduct nu...