152. 乘积最大子数组

难度中等963

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

示例 1:

输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。

示例 2:

输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组

标签:动态规划

  • 遍历数组时计算当前最大值,不断更新

  • 令imax为当前最大值,则当前最大值为 imax = max(imax * nums[i], nums[i])

  • 由于存在负数,那么会导致最大的变最小的,最小的变最大的。因此还需要维护当前最小值imin = min(imin * nums[i], nums[i])

  • 当负数出现时则imax与imin进行交换再进行下一步计算

  • 时间复杂度:O(n)

package com.nie.o2;/***@auth  wenzhao*@date 2021/2/22  18:58*/public class LEE152 {public int maxProduct(int[] nums) {int max = Integer.MIN_VALUE;int imax = 1;int imin = 1;for (int i = 0; i < nums.length; i++) {if (nums[i] < 0) {int temp = imax;imax = imin;imin = temp;}imax = Math.max(imax * nums[i], nums[i]);imin = Math.min(imin * nums[i], nums[i]);max = Math.max(max, imax);}return max;}
}

LC152---乘积最大子数组相关推荐

  1. 152. 乘积最大子数组

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

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

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

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

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

  4. CodeTop097 乘积最大子数组

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

  5. 算法-----------乘积最大子数组(Java版本)

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

  6. 乘积最大子数组—leedcode152

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

  7. leetcode152. 乘积最大子数组

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

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

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

  9. Leetcode--152. 乘积最大子数组(java)

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

  10. 152 乘积最大子数组(动态规划)

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

最新文章

  1. 【OI】WERTYU UVa 10082
  2. 【元气云妹】有趣有料的云吞铺子,来一碗吗?
  3. 批处理删除编译产生的多余文件
  4. C/S和B/S的区别
  5. 【编译原理】语言的定义
  6. 定时跑视图往另外一张表添加数据_程序猿删库跑路示例
  7. WordPress插件-WBOLT热门关键词推荐插件v1.3.0 Pro绿色版
  8. c++中int double 与char,string之间的转换
  9. lede 内核 单 编_openwrt和lede有何区别?
  10. 三星android p内测,两年前老机重生!三星开启Galaxy C9 Pro升级安卓8.0内测
  11. maven的scm插件介绍及使用示例
  12. linux下thinkpad X1 carbon 2018 电源管理
  13. 英语六级翻译整理【未更新完】
  14. eliteadmin网页后台管理模板简介
  15. PHPer都应该关注的服务端性能问题–听云Server试用笔记
  16. 面向对象之多态【向上转型与向下转型】
  17. IntelliJ IDEA 如何配置MySQL数据库
  18. [Android/Linux]-1.power_supply框架初识
  19. java毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署
  20. Z-INDEX: 999

热门文章

  1. Minimum Class Confusion for Versatile Domain Adaptation
  2. linux 关闭虚拟内存,Linux关于虚拟内存
  3. 麻将胡牌算法(C++版)
  4. EEE802.11协议基础知识
  5. 2021清北学堂储备营Day1
  6. basler相机的类
  7. ubuntu 终端查看图片(eog)
  8. 【Structure Light】reading notes(一)
  9. 【调剂】山东大学控制科学与工程学院生物医学实验室课题组招收硕士研究生...
  10. 批量生成Code128- C条码