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

LeetCode:88.乘积最大子数组

目录

1.乘积最大的子数组


1.乘积最大的子数组

        对于这道题,我们只通过一个状态转移方程是解决不了的,因为前面的乘积中可能会存在负数这种情况,我们应当用两个来解决

        设f[i]表示以i位置结尾的子数组的最大乘积,g[i]表示以i位置结尾的子数组的最小乘积

f[i]可分为以下情况:

  1. 长度为1,f[i] = nums[i]
  2. 长度不为1,如果nums[i] > 0的话,想要保证乘积最大,那么i-1前面的乘积也要为最大,f[i] = f[i - 1] * nums[i],如果nums[i]  < 0的话,要最大,i - 1的乘积应该是一个最小的乘积表示为负数,这样相乘才会最大,f[i] = g[i - 1] * nums[i]

g[i]的情况与f[i]一样

class Solution {
public:int maxProduct(vector<int>& nums) {int n = nums.size();vector<int> f(n + 1), g(n + 1);f[0] = g[0] = 1;int ret = INT_MIN;for(int i = 1; i <= n; i++){int x = nums[i - 1], y = f[i - 1] * nums[i - 1], z = g[i - 1] * nums[i - 1];f[i] = max(x, max(y, z));g[i] = min(x, min(y, z));ret = max(f[i], ret);}return ret;}
};

http://www.dtcms.com/a/438058.html

相关文章:

  • 7.Java线程中的重要方法(interrupt、isInterrupted、interrupted)
  • 【深度学习计算机视觉】09:语义分割和数据集
  • Vue3 + Three.js 实现 3D 汽车个性化定制及展示
  • 外贸网站 费用广告公司取名字
  • 金融分析师技能提升路径与学习资源指南
  • MySQL processes, threads, connections的区别
  • 自己做的网站首页变成符号了工程与建设
  • P6374 「StOI-1」树上询问(倍增+LCA)
  • epoll_ctl函数中`sockfd` 和 `ev.data.fd`的疑问解析
  • 做元器件上什么网站做网站公司的排名
  • hadoop-hdfs-secondaryNameNode
  • 每日一个网络知识点:OSI参考模型
  • 怎么在国外网站做推广wordpress企业主题制作视频教程
  • K8s不同工作负载对应LOL里哪位英雄
  • 【探寻C++之旅】第十六章:unordered系列的认识与模拟实现
  • 用terraform 创建一个GKE private cluster
  • [优选算法专题三.二分查找——NO.22寻找峰值]
  • 中国建设银行官方网站下载北京企业做网站
  • [优选算法专题三.二分查找——NO.24搜索旋转排序数组中的最⼩值]
  • 微服务项目->在线oj系统(Java-Spring)--竞赛管理
  • 苏州市吴江太湖新城建设局网站网站模版建设教程
  • 【AI Design】如何利用 Paraflow 从创意到产品设计规范
  • 360免费建站网址是什么深圳网站推广哪家好
  • 【Linux系列】并发世界的基石:透彻理解 Linux 进程 — 进程概念
  • Spring AI alibaba 工具调用
  • 机器学习基础入门(第三篇):监督学习详解与经典算法
  • 做产品的淘宝客网站网站建设的素材处理方式
  • 【专业词典】FAST
  • 诸城网站建设wordpress退出维护
  • 预约记录自动关联功能测试