用 Python 查詢連續子陣列的最大乘積
假設我們有一個名為 nums 的陣列,我們必須找到其中一個數組內的連續子陣列(至少包含一個數字)的元素的乘積,其乘積最大。因此,如果陣列是 [1,9,2,0,2,5],輸出將是 18,因為連續子陣列 [1,9,2] 的乘積最大。
為了解決這個問題,我們將遵循以下步驟 -
- max_list := 大小為 nums 的列表,用 0 填充
- min_list := 大小為 nums 的列表,用 0 填充
- min_list := 大小為 nums 的列表,用 0 填充
- 對於 i 在 1 到 nums 長度之間的範圍
- max_list[i] = max_list[i - 1]*nums[i]、min_list[i - 1]*nums[i] 和 nums[i] 中的最大值
- min_list[i] = minof min_list[i - 1]*nums[i]、nums[i]、max_list[i - 1]*nums[i]
- 返回 max_list 的最大值
讓我們看看下面的實現以獲得更好的理解 -
示例
class Solution(object): def maxProduct(self, nums): max_list = [0] * len(nums) min_list = [0] * len(nums) max_list[0] = nums[0] min_list[0] = nums[0] for i in range(1,len(nums)): max_list[i] = max(max(max_list[i-1]*nums[i],min_list[i-1]*nums[i]),nums[i]) min_list[i] = min(min(min_list[i-1]*nums[i],nums[i]),max_list[i-1]*nums[i]) return max(max_list) ob1 = Solution() print(ob1.maxProduct([1,9,2,0,2,5]))
輸入
[1,9,2,0,2,5]
輸出
18
廣告