当前位置: 首页 > news >正文

leetcode-乘积最大子数组

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

测试用例的答案是一个 32-位 整数。

请注意,一个只包含一个元素的数组的乘积是这个元素的值。

示例 1:

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

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

提示:

1 <= nums.length <= 2 * 104
-10 <= nums[i] <= 10
nums 的任何子数组的乘积都 保证 是一个 32-位 整数

思路:假设一个非空连续子数组序列1,2,3,…,k。该序列由k个数组成。
该数组序列乘积最大。
对于第k个数,该问题中可能为正数,也可能为负数。
如果k为正数,那么非空连续子数组序列1,2,3,…,k-1,为正数。
如果k为负数,那么非空连续子数组序列1,2,3,…,k-1,为负数。

设数组中下标为i的数是非空连续子数组序列的第k个数。那么nums[i]要么是nums[i-1]为结尾的连续子数组序列的后一个数,要么nums[i]是连续子数组序列的第一个数。
分两种情况,如果nums[i]>=0,最大的乘积maxPos[i] = Max(maxPos[i-1]*nums[i],nums[i]);
如果nums[i]<0,最大的乘积maxPos[i] = Max(minPos[i-1]*nums[i],nums[i]);
期间还需要维护最小的乘积,同样分两种情况。
如果nums[i]>=0,最小的乘积minPos[i] = Max(minPos[i-1]*nums[i],nums[i]);
如果nums[i]<0,最小的乘积minPos[i] = Max(maxPos[i-1]*nums[i],nums[i]);

代码

class Solution{publicintmaxProduct(int[]nums){int[]maxNums=newint[nums.length];int[]minNums=newint[nums.length];intres=nums[0];maxNums[0]=nums[0];minNums[0]=nums[0];for(inti=1;i<nums.length;i++){if(nums[i]>=0){maxNums[i]=Math.max(nums[i],nums[i]*maxNums[i-1]);minNums[i]=Math.min(nums[i],nums[i]*minNums[i-1]);}else{maxNums[i]=Math.max(nums[i],nums[i]*minNums[i-1]);minNums[i]=Math.min(nums[i],nums[i]*maxNums[i-1]);}res=Math.max(res,Math.max(maxNums[i],minNums[i]));}returnres;}}
http://www.jsqmd.com/news/437218/

相关文章:

  • 具身智能篇---LLaVA (Large Language-and-Vision Assistant)
  • STM32 ADC与DMA调试经验总结:从困惑到顿悟的2天调试之旅
  • 云手机 TIKTOK账号运营
  • 华东服务器机柜 网络稳定
  • 具身智能篇---OpenVLA (Open-Source Vision-Language-Action Model)
  • 2026年3月盐城税务筹划公司推荐,合法节税降负优化方案服务商 - 品牌鉴赏师
  • SolonCode v0.0.16 发布 - 终端智能助手(或编码智能体)
  • 大数据分析 - 呓语
  • 2026年3月南宁电工证培训机构推荐榜,彰显本地教学实力 - 品牌鉴赏师
  • 一键部署,告别下载烦恼:这款高颜值PHP内网软件库,让办公协作飞起来!
  • 豆包可以广告推广吗?如何借GEO抢占AI流量红利? - 品牌2026
  • 芯片制造企业如何选择PDF转Word发布方案?
  • 【Linux系统编程】(四十四)线程同步下篇:条件变量深度解析与 POSIX 信号量实战
  • 帝国CMS处理Word截图粘贴发布的技巧?
  • 汉中汉府人家空间设计有限责任公司企业简介(简称:汉府人家装饰) - 一个呆呆
  • 网页编辑器导入微信公众号文章的发布方法?
  • Flutter 三方库 dart_webrtc 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、基于 WebRTC 标准的工业级实时音视频通讯与低延迟流媒体引擎
  • 前端如何实现帝国CMS的Word文档一键发布?
  • 2026年3月电永磁吊具厂家推荐,高性能与可靠性兼具的优质品牌 - 品牌鉴赏师
  • 2026年3月焊接圆盘厂家推荐,焊接牢固密封性好优质厂家 - 品牌鉴赏师
  • 【超全】基于微信小程序的家政预约系统【包括源码+文档+调试】
  • Flutter 三方库 enven 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、基于编译期代码生成的工业级环境变量混淆与资产安全保护引擎
  • 制造业公司如何做DeepSeek推广?联系哪家公司? - 品牌2026
  • 做医美的公司如何做DeepSeek推广? - 品牌2026
  • Vue3 响应式原理与 Composition API 实战踩坑:我被这些细节坑了3次后终于搞懂了
  • 2026年3月定制异型电永磁吸盘厂家推荐,异型定制按需设计厂家 - 品牌鉴赏师
  • 2026年3月不锈钢法兰盘毛坯厂家推荐,不锈钢防腐防锈优质厂家 - 品牌鉴赏师
  • LCT详解
  • 本地部署开源数据可视化和协作工具 Redash 并实现外部访问
  • Flutter 三方库 flutterando_analysis 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、严谨、工业级的代码静态审计与工程质量守卫引擎