本文主要是介绍Leetcode—— 152. 乘积最大子数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
152. 乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
示例 1:
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路1
暴力循环
程序代码1:
class Solution:def maxProduct(self, nums):n = len(nums)max_mul = nums[0]for i in range(n):cur_mul = 1for j in range(i,n):cur_mul *= nums[j]if cur_mul > max_mul:max_mul = cur_mulreturn max_mul
解题思路2:
滚动数组+dp
程序代码2:
class Solution:def maxProduct(self, nums):f,g,res = nums[0],nums[0],nums[0]for i in range(1,len(nums)):num = nums[i]fa = f * numga = g * numf = max(num,max(fa,ga))g = min(num,min(fa,ga))res = max(f,res)return res
这篇关于Leetcode—— 152. 乘积最大子数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!