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

LeetCode HOT100 - 乘积最大子数组

如果是和最大,那么直接一直加上去和 0 取个 max 好了,因为正值对后续一定是正贡献

现在考虑积,是不是也是类似

部分类似,如果全部都是正值,那么是类似的

但是有负值

负数的影响是什么呢,就是这里是小的,但是下次再乘个负数它就正了

所以这里要同时维护最小值和最大值

当然只维护两个元素自然也可以

但这里用 dp 数组

dp[i][0] 表示以 i 结尾,且用了 i 的最小值
dp[i][1] 就是最大值

之所以要用 i ,是因为后面更新是要和前面连着的,所以更新 i 时 i -1 必须用上,因此状态设计时 i 是被使用了的

每次更新只和前一个元素有关

class Solution {
public:int maxProduct(vector<int>& a) {int n = a.size();if (n == 1) {return a[0];}int ans = a[0];vector<array<int, 2>> dp(n);dp[0][1] = max(1, a[0]);dp[0][0] = min(1, a[0]);for (int i = 1; i < n; i++) {dp[i][0] = min({dp[i - 1][0] * a[i], dp[i - 1][1] * a[i], 1});dp[i][1] = max({dp[i - 1][0] * a[i], dp[i - 1][1] * a[i], 1});ans = max({dp[i - 1][0] * a[i], dp[i - 1][1] * a[i], ans});}return ans;}
};
http://www.jsqmd.com/news/502988/

相关文章:

  • 用AutoGen+LangGraph搭建智能审批系统:图解多代理协作开发全流程
  • 53. django之模型层
  • 人脸识别OOD模型惊艳效果:雨雾天气监控画面中人脸质量分动态评估
  • 深入解析arping与arp命令:高效检测IP冲突与MAC地址查询实战
  • 95与96特服号品牌认证服务商:提升企业品牌权威度 - 企业服务推荐
  • PostgreSQL JDBC连接串参数全解析:从单机到集群的实战配置指南
  • ngx_shmtx_create
  • 3步掌握OpenVoice语音克隆:从零开始的即时语音合成完全指南
  • 射频滤波器的原理、应用与特性
  • Python实战:5分钟搞定TF-IDF文本向量化(附完整代码)
  • Spring Boot异常处理:别被@RestControllerAdvice“坑”了!
  • 国产汽车BCM系统软件架构与核心功能解析
  • Ubuntu/Debian系统下解决libstdc++.so.6版本缺失问题的3种方法(含Anaconda方案)
  • R语言新手必看:如何用pkgbuild和Sys.which检查并安装Rtools(附常见错误解决方案)
  • 魔兽地图跨版本转换利器:w3x2lni全解析
  • NLnet Labs NSD:高性能权威DNS服务器的技术解析与实践指南
  • 开发提效利器:在快马平台一键生成配置完善的vit高效开发环境
  • OpenClaw凭什么吃掉测试岗?
  • Qwen3在重装系统后快速恢复AI开发环境的实战教程
  • AI应用架构师必藏:AI系统故障诊断的完美方案
  • 最火热的极速开发框架Spring Boot
  • 语言大清洗逃生:文言文编程在软件测试中的火种延续
  • Android Camera HAL层V4L2接口实战:从枚举到数据获取全流程解析
  • 深圳离婚律师巫丽云 | 专注婚家维权,独创法律 + 心理双轨守护 - 企业推荐官【官方】
  • ArcMap批处理矢量化实战:用Raster Painting工具高效清理CAD地形图
  • 从心理学到机械臂:拆解苹果论文里让机器人更讨喜的3个情感化设计秘诀
  • Evidence企业实践:构建数据驱动智能决策的四象限实施指南
  • 探索电力变换领域的“多面手”:MMC及相关技术
  • 效率倍增:借助快马AI快速开发小红书热点追踪工具,解放运营人力
  • HAA9809功放芯片深度评测:2毛钱如何实现5.4W高保真输出?