1. 问题描述:

给你一个整数数组 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

2. 思路分析:

一开始的时候感觉应该使用的动态规划来解决的,动态规划一般是通过数组来实现的,对于python语言来说可以使用list列表来实现,但是并没有很明确的思路,在评论区中发现一位大佬的解法非常棒,他的做法是维护两个变量,到当前位置的的子数组的最大乘积与最小乘积,记录最小乘积主要是出现负号的情况有可能乘以当前数字之后会得到目前的最大值,这个动态规划求解的思路是非常值得借鉴的

3. 代码如下:

from typing import Listclass Solution:# 使用打断点的方法来理解其中的思路过程def maxProduct(self, nums: List[int]) -> int:if not nums: returnres = nums[0]pre_max = nums[0]pre_min = nums[0]for num in nums[1:]:cur_max = max(pre_max * num, pre_min * num, num)cur_min = min(pre_max * num, pre_min * num, num)res = max(res, cur_max)pre_max = cur_maxpre_min = cur_minreturn res

152 乘积最大子数组(动态规划)相关推荐

  1. 152. 乘积最大子数组

    Title 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积. 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: ...

  2. [Leedcode][JAVA][第152题][乘积最大子数组][动态规划]

    [问题描述][中等] 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积.示例 1:输入: [2,3,-2,4] 输出: 6 解 ...

  3. 【LeetCode笔记】152. 乘积最大子数组(Java、动态规划)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 考虑正数.负数和0的情况 思路 & 代码 既然是使用的动态规划,那么有以下几点: 维护什么:维护iMax和iMin,分别代表包含当 ...

  4. LeetCode 热题 HOT 100 第四十九天 152. 乘积最大子数组 中等题 用python3求解

    题目地址 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积. 测试用例的答案是一个32-位整数. 子数组 是数组的连续子序 ...

  5. leetcode 152. Maximum Product Subarray | 152. 乘积最大子数组(Java)

    题目 https://leetcode.com/problems/maximum-product-subarray/ 题解 class Solution {public int maxProduct( ...

  6. 动态规划——乘积最大子数组(Leetcode 152)

    题目选自Leetcode 152. 乘积最大子数组 题目描述: 解题思路: 解题代码: class Solution { public:int maxProduct(vector<int> ...

  7. 最大连续子数组和 动态规划_每日LeetCode,乘积最大子数组

    152. 乘积最大子数组​leetcode-cn.com 给你一个整数数组nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积. 示例 1: 输入: ...

  8. CodeTop097 乘积最大子数组

    乘积最大子数组 给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组 (该子数组中至少包含一个数字),并返回该子数组所对应的乘积 测试用例的答案是一个32位整数 子数组是数组的连续子序列. ...

  9. 【LeetCode】LeetCode之乘积最大子数组——枚举+动态规划+Kadane算法

最新文章

  1. 阿里腾讯裁员冲上热搜,消息称最高涉及30%,官方未回应
  2. jQuery插件之ajaxFileUpload
  3. opencv滤波美颜
  4. 第二百七十五节,MySQL数据库安装和介绍
  5. CSP认证201604-3 路径解析[C++题解]:字符串处理、模拟、vector切分字符串
  6. 使用Dockerfile构建SpringBoot应用镜像
  7. SAP云平台和SAP C4C之间的OAuth2.0配置
  8. [Java基础]Lambda表达式的格式与使用前提
  9. 【BZOJ3759】【cogs1603】饥饿游戏,博弈
  10. 收回扣、打麻将、开赌场?比亚迪自曝多名员工贪污腐败
  11. 旷视发布3D感知全栈解决方案!现在,AI+3D只差杀手级应用了
  12. HDU1576 A/B【扩展欧几里得算法+试探法】
  13. win7系统如何添加环境变量
  14. SAP ABAP Loop…Assigning与Loop…Into的比较
  15. 体育运用计算机教学的教学反思,[转载]体育教师的成长与反思
  16. How to Rerun Failed Tests in JUnit?
  17. 菜鸟教程C#高级教程
  18. Compilation failure:错误: 找不到符号
  19. web端接入微信小程序扫码进行登录
  20. c++类成员函数中调用多线程函数_beginthreadex()

热门文章

  1. 斧子演示_用斧头进行自动辅助功能检查
  2. python之selenium的switch_to
  3. python爬取李白和杜甫诗集,并处理,分类,预测
  4. Text Classification Algorithms: A Survey——1. Introduction引言
  5. cf #634 (Div. 3) E2 - Three Blocks Palindrome (hard version)
  6. 山东5G覆盖时间表出炉:2020年市区重点区域,2023年覆盖县城
  7. 二次调频,4机2区系统二次调频,用模型方法对四机两区系统进行了二次调频分析
  8. 基于BQ40Z50芯片的寄存器读写
  9. 编写一个模拟航空客运定票系统的程序
  10. 德生收音机ICR—100拆机图解