58 乘积最大子数组

news2024/11/18 19:40:54

乘积最大子数组

    • 题解1 DP
      • 换成三个变量(因为是连续的,只和上一个状态有关的,所以三个暂存变量迭代就行)

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

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        int s = nums.size();
        if(1 == s) return nums[0];
        // 维护两个dp,一个是最小值(考虑负数情况), 一个是最大值
        // 处理负数的情况: 当前位置的最优解未必是由前一个位置的最优解转移得到的
        vector<int> dpmin(s);
        vector<int> dpmax(s);
        dpmin[0] = dpmax[0] = nums[0];
        for(int i = 1; i < s; i++){
            dpmin[i] = min(min(dpmin[i-1]*nums[i], dpmax[i-1]*nums[i]), nums[i]);
            dpmax[i] = max(max(dpmin[i-1]*nums[i], dpmax[i-1]*nums[i]), nums[i]);
        }
        int res = INT_MIN;
        for(auto& k : dpmax)
            res = max(res, k);

        return res;
    }
};

在这里插入图片描述

换成三个变量(因为是连续的,只和上一个状态有关的,所以三个暂存变量迭代就行)

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        int s = nums.size();
        if(1 == s) return nums[0];
        int maxF = nums[0], minF = nums[0], ans = nums[0];
        for (int i = 1; i < nums.size(); ++i) {
            int mx = maxF, mn = minF;
            maxF = max(mx * nums[i], max(nums[i], mn * nums[i]));
            minF = min(mn * nums[i], min(nums[i], mx * nums[i]));
            ans = max(maxF, ans);
        }
        return ans;
    }
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

出席第三届“一带一路”峰会的斯里兰卡总统会见深兰科技高层

10月16日&#xff0c;应斯里兰卡投资促进部的邀请&#xff0c;深兰科技集团董事副总裁刘园桂、集团营销中心总经理徐诗彪一行出席了在北京举行的“中斯投资论坛”。 图&#xff1a;刘园桂女士向斯里兰卡总统赠送熊猫智能公交模型 论坛期间&#xff0c;来北京参加第三届“一带一…

菜鸟智谷产业园正式开园!入驻企业可享受“城区+园区”双重政策扶持

位于杭州未来科技城的菜鸟智谷产业园正式开园了! 杭州未来科技城发布新电商产业加速“百千万亿”计划,菜鸟智谷产业园发布“产业赋能计划”,并设立天猫品牌孵化基地,落户中国(杭州)跨境电商综试区一带一路电商运营中心,引入悦汇跨境产业创新基金……10月17日,杭州未来科技城(海…

【ELK 使用指南 1】ELK + Filebeat 分布式日志管理平台部署

ELK和EFLK 一、前言1.1 日志分析的作用1.2 需要收集的日志1.3 完整日志系统的基本特征 二、ELK概述2.1 ELK简介2.2 为什么要用ELK?2.3 ELK的组件 三、ELK组件详解3.1 Logstash3.1.1 简介3.1.2 Logstash命令常用选项3.1.3 Logstash 的输入和输出流3.1.4 Logstash配置文件 3.2 E…

客户开发信怎么写?新手如何发客户开发信?

客户开发信模板有哪些&#xff1f;编写外贸客户邮件的技巧&#xff1f; 客户开发信是一种重要的商业沟通工具&#xff0c;用于建立和维护与现有客户之间的联系&#xff0c;以及吸引新客户。写一封成功的客户开发信需要一定的技巧和策略。在这篇文章中&#xff0c;我们将介绍如…

数据结构:二叉树(2)

二叉树的基本操作 获取树的结点总数 遍历思路&#xff1a; 每次遍历一个节点&#xff0c;遍历完nodeSize&#xff0c;然后遍历它的左右子树 如果遍历到空的节点&#xff0c;就返回0 public int nodeSize 0;int size(TreeNode root){if(root null){return 0;}nodeSize;siz…

智慧公厕:探索未来城市环境卫生设施建设新标杆

智慧公厕是当代城市建设的一项重要举措&#xff0c;它集先进技术、人性化设计和智能管理于一体&#xff0c;为人们提供更为舒适、便捷和卫生的厕所环境。现代智慧公厕的功能异常丰富&#xff0c;从厕位监测到多媒体信息交互&#xff0c;从自动化清洁到环境调控&#xff0c;每一…

电商数据平台西域根据ID取商品详情API接口采集产品详情数据、价格 、销量数据操作指南

商品详情API接口是一种用于访问和获取商品信息的接口&#xff0c;通常用于连接电商平台和商家应用程序。这个接口可以提供有关商品的各种详细信息&#xff0c;如名称、价格、描述、图片、类别、库存和评价等。它使得开发者能够为平台上的消费者提供更个性化和定制化的购物体验&…

通达OA saas化改造

登录页增加选择单位下拉菜单 <tr height"37" class"login_field"><td align"center"><b>用户名</b> <input type"text" class"text" name"UNAME" size"15" onmouseover&qu…

配电房无人值守方案

随着科技的不断进步&#xff0c;许多传统需要人工操作和维护的领域逐渐被自动化和智能化方案所替代。配电房作为电力供应的核心部分&#xff0c;也面临着同样的变革。 力安科技电易云配电室无人值守监控系统以智能物联数据采集和智能物联管控"为关键&#xff0c;通过加…

家装家具经营小程序商城的作用是什么

无论富贫&#xff0c;家里家具总是不可少的&#xff0c;也是人们生活所需&#xff0c;随着人们生活质量提升&#xff0c;市场中各式家装家具品牌也非常多&#xff0c;琳琅满目的商场里价格/质量高低可供消费者自由选择。 随着线上电商快速崛起&#xff0c;由于线上具备多品牌汇…

接口自动化测试难点:数据库验证解决方案!

接口自动化中的数据库验证&#xff1a;确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环&#xff0c;而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码&#xff0c;帮…

数字电路设计得力助手——《Design Compiler User Guide》

在当今数字化时代&#xff0c;电子设备和芯片的需求日益增长&#xff0c;这使得数字电路设计变得愈发重要。在数字电路设计过程中&#xff0c;使用先进的工具和技术是至关重要的。Synopsys公司的Design Compiler就是这样一款备受推崇的设计编译器软件&#xff0c;而其详尽的用户…

Android DI框架-Hilt

到底该如何理解<依赖注入> 模版代码&#xff1a;食之无味&#xff0c;弃之可惜 public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView mTextView(TextView) findVi…

vueday01——双向绑定

1.在template里面创建一个button&#xff08;原生的不需要导入&#xff09; <button click"myclick()">数值是{{ count }}</button> 2.在setup里面声明变量和方法&#xff0c;以及将其导出 setup() {const count ref(0);const myclick () >{count.…

ROC与AUC与主动学习评价指标ALC

首先需要关注一下什么是混淆矩阵&#xff0c;此处认为1为正类&#xff0c;0为负类 预测为0预测为1真实为0TN真负例&#xff08;预测为0&#xff0c;真实也为0&#xff09;FP假正例&#xff08;预测为1&#xff0c;但真实为0&#xff09;真实为1FN假负例&#xff08;预测为0&am…

VUE 快速上手与基础指令(内附详细案例)

文章目录 前言一、vue快速上手1. vue是什么2. 创建一个vue实例3. 插值表达式4. vue的响应式特性5. 开发者工具安装 二、vue指令1. v-html2. v-if 和 v-show3. v-else 和 v-else-if4. v-on5. v-bind6. 案例-波仔的学习之旅7. v-for8. 案例-小黑的书架9. v-for 中的key10. v-mode…

Python 框架学习 Django篇 (三) 链接数据库

只要你是做后端开发的&#xff0c;那么就离不开各种数据库&#xff0c;Django框架对各种数据库都非常友好&#xff0c;比如常见的PostgreSQL、MySQL、SQLite、Oracle&#xff0c;django都对他们提供了统一调用api&#xff0c;我们这里主要使用mysql数据库作为演示 一、ORM机制 …

报考阿里云acp认证,你得到的是什么?

放眼全球能够和亚马逊AWS、微软Azure竞争的&#xff0c;国内也就只有阿里云了。 阿里云目前稳居国内云计算市场第一&#xff0c;比排后面5名同行市场占有率的总和还要多&#xff0c;全球云计算市场&#xff0c;阿里云目前排名第3位。 阿里云的市场占有率说明市场对于阿里云产…

许战海战略文库|我们的建议:华彬集团改名战马饮料集团

摘要&#xff1a;战马未能有效借势红牛,市场份额不及东鹏特饮。战马要走出当下面临的窘境,需要将华彬集团改名为战马饮料集团&#xff0c;借势红牛加强战马主品牌的认知建设构建战马饮料的产品矩阵;组建战马独立销售网络。 许战海咨询认为&#xff1a;过度差异化造成华彬集团快…

肿瘤科常用评估量表汇总,建议收藏!

根据肿瘤科医生的量表使用情况&#xff0c;笔者整理了10个肿瘤科常用量表&#xff0c;可在线评测直接出结果&#xff0c;可转发使用&#xff0c;可生成二维码使用&#xff0c;可创建项目进行数据管理&#xff0c;有需要的小伙伴赶紧收藏&#xff01; 肿瘤患者的ECOG评分标准 肿…