原题
https://leetcode.cn/problems/maximum-product-subarray/description/
思路
动态规划
复杂度
时间:O(n)
空间:O(n)
Python代码
class Solution:
def maxProduct(self, nums: List[int]) -> int:
dp_max = nums[:]
dp_min = nums[:]
for i in range(1, len(nums)):
dp_max[i] = max(dp_min[i-1] * nums[i], dp_max[i-1] * nums[i], nums[i])
dp_min[i] = min(dp_min[i-1] * nums[i], dp_max[i-1] * nums[i], nums[i])
return max(dp_max)
Go代码
func maxProduct(nums []int) int {
dp_max, dp_min := make([]int, len(nums)), make([]int, len(nums))
copy(dp_max, nums)
copy(dp_min, nums)
for i := 1; i < len(nums); i++ {
dp_max[i] = max(dp_min[i-1]*nums[i], dp_max[i-1]*nums[i], nums[i])
dp_min[i] = min(dp_min[i-1]*nums[i], dp_max[i-1]*nums[i], nums[i])
}
return slices.Max(dp_max)
}
472

被折叠的 条评论
为什么被折叠?



