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

【LeetCode每日一题】152. 乘积最大子数组

题目:

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

思路

由于做了53. 最大子数组和

下意识觉得求出所有元素的以该元素结尾的连续子数组的最大值,然后最大值数组里求最大值。

如何求以某个元素结尾的连续子数组最大值呢?

首先约定:

preMax 表示以前一个元素结尾的连续子数组的最大值,

preMin 表示以前一个元素结尾的连续子数组的最小值

由于思维定势,会觉得是 max = Math.max(元素A,元素A*preMax )。

但是这样是错误的。

例如:[-2,3,-2]

第一个元素最大值是 -2 ,第二个元素最大值是3,第三个元素最大值是12。

但是根据公式,第三个元素最大值 = Math.max(-2*3,-2)= -2.

原因就在于数组里的元素是有正负的,如果只是正数,那么这个方式是可以的。

所以如何求以某个元素结尾的最大值呢?

如果该元素是负数,max = Math.max( 元素, 元素*preMin )

如果该元素是正数,max = Math.max( 元素, 元素*preMax)

因此对于每个元素都要记录最小值与最大值。

如果该元素是负数,max = Math.max( 元素, 元素preMin) min = Math.min( 元素, 元素preMax)

如果该元素是正数,max = Math.max( 元素, 元素preMax) min = Math.min( 元素, 元素preMin)

max = Math.max(元素, 元素preMin,元素preMax)

min = Math.min( 元素, 元素preMin,元素preMax)

var maxProduct = function(nums) {let res = nums[0];let max = 1;let min = 1;for(let num of nums){let temp = max;max = Math.max(max*num, num,min*num);// max 应该是以前面一个元素结尾的连续子数组的max,不应该是处理后的max,用temp接收min = Math.min(min*num,num,temp*num);res = Math.max(res, max);}return res;
};

相关文章:

【LeetCode每日一题】152. 乘积最大子数组

题目: 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 思路 由于做了53. 最大子数组和 下意识觉得求出所有元素的以该元素结尾的连续…...

Python 反射

Python 反射是什么? 学习了几天,做个总结留给自己看。 感觉跟 SQL 入门要掌握的原理一样,Python 反射看起来也会做4件事,“增删查获” 增 - 增加属性,方法 setattr 删 - 删除属性,方法 delattr 查 - …...

HTML基本网页制作

一、制作工商银行电子表单 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>第一个网页的标题</ti…...

Tcl语言语法精炼总结

一、置换符号 1.变量置换 $ TCl解释器会将认为$后面为变量名&#xff0c;将变量名置换成它的值 2.命令置换 [] []内是一个独立的TCL语句 3.反斜杠置换 \ 换行符、空格、[、$等被TCL解释器当作特殊符号处理。加上反斜杠后变成普通字符 \t TAB \n 换行符 4.双引号 “” “…...

[GPT]Andrej Karpathy微软Build大会GPT演讲(下)--该如何使用GPT助手

该如何使用GPT助手--将GPT助手模型应用于问题 现在我要换个方向,让我们看看如何最好地将 GPT 助手模型应用于您的问题。 现在我想在一个具体示例的场景里展示。让我们在这里使用一个具体示例。 假设你正在写一篇文章或一篇博客文章,你打算在最后写这句话。 加州的人口是阿拉…...

路由器静态路由的配置

路由器静态路由的配置步骤如下&#xff1a; 进入系统视图。输入命令sys进入系统视图。配置路由器的接口IP地址。命令格式为int g0/0/0&#xff0c;其中g0/0/0表示路由器的接口&#xff0c;可以根据实际情况进行修改。然后使用命令ip add配置接口的IP地址。配置下一跳地址。在静…...

[Firefly-Linux] RK3568在Ubuntu上安装内核头文件实现本地编译驱动程序

文章目录 一、介绍二、安装三、编译驱动四、自行编译debian包一、介绍 在 Linux 操作系统中,linux-headers.deb 和 linux-images.deb 分别用于安装内核头文件和内核二进制文件。 linux-headers.deb: 内核头文件包,通常以 linux-headers-x.x.x-x 的形式命名。包含编译内核模…...

RabbitMQ Streams 详解

RabbitMQ Streams是一种持久复制数据结构&#xff0c;可以完成与队列相同的任务&#xff1a;它们缓冲来自生产者的消息&#xff0c;这些消息由消费者读取。然而&#xff0c;流与队列的区别在于两个重要方面&#xff1a;消息的存储和消费方式。 Streams为仅追加的消息日志建模&a…...

跨境电商如何利用跨境客服软件提升销售额

随着全球化的推进&#xff0c;跨境电商成为了许多企业拓展市场的重要途径。然而&#xff0c;跨境电商面临着语言、文化、时差等多种挑战&#xff0c;为了提供更好的客户服务并提升销售额&#xff0c;跨境电商需要利用跨境客服软件。本文将探讨跨境电商如何利用跨境客服软件来提…...

css/less/scss代码注意事项

一.命名 1.类名使用小写字母&#xff0c;以中划线分割;id 使用 驼峰式命名; 2.less/scss中的函数、混合采用驼峰命名; 3. class 的命名不要使用 标签名,如.p .div .img; 二.选择器 尽量使用直接子选择器&#xff0c;否则&#xff0c;有时会造成性能损耗 .content .title { .…...

Git应用——代码提交规范 feat ,fix ,style

当前使用 feat 增加新功能fix 修复问题/BUGstyle 代码风格相关无影响运行结果的perf 优化/性能提升refactor 重构revert 撤销修改test 测试相关docs 文档/注释chore 依赖更新/脚手架配置修改等workflow 工作流改进ci 持续集成types 类型定义文件更改wip 开发中 别处看到 fea…...

TDengine Kafka Connector将 Kafka 中指定 topic 的数据(批量或实时)同步到 TDengine

教程放在这里&#xff1a;TDengine Java Connector&#xff0c;官方文档已经写的很清晰了&#xff0c;不再赘述。 这里记录一下踩坑&#xff1a; 1.报错 java.lang.UnsatisfiedLinkError: no taos in java.library.pathat java.lang.ClassLoader.loadLibrary(ClassLoader.j…...

单片机的低功耗模式介绍

文章目录 简介一、功耗来源说明1.1、芯片工作模式1.2、静态损耗1.3、I/O额外损耗1.4、动态损耗 二、功耗如何测量三、降低功耗有什么方法3.1、选取合适的芯片工作模式3.2、降低工作频率3.3、关闭不需要使用的外设3.4、 降低静态电流损耗3.5、 周期采集供电3.6、 设置IO口状态 四…...

基于SSM实现的精品课程网站

一、系统架构 前端&#xff1a;jsp | js | css | jquery | bootstrap 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. 登录页 02. web端-首页 03. web端-视频教程 04. web端-资料…...

广州旅游攻略(略说一二)

广州是中国南方的一个重要城市&#xff0c;也是广东省的省会&#xff0c;拥有着悠久的历史和丰富的文化遗产。作为中国最繁华的城市之一&#xff0c;广州吸引了大量的游客前来探索其独特的魅力。今天我将为大家介绍一份广州旅游攻略&#xff0c;希望能帮助各位游客更好地了解这…...

C++STL的list模拟实现

文章目录 前言 list实现push_back迭代器(重点)普通迭代器const迭代器 inserterase析构函数构造函数拷贝构造赋值 vector和list的区别 前言 要实现STL的list, 首先我们还得看一下list的源码。 我们看到这么一个东西&#xff0c;我们知道C兼容C&#xff0c;可以用struct来创建一…...

django--分页功能

Django 提供了强大的分页功能&#xff0c;可以轻松地在视图中实现分页。 在视图中使用分页&#xff1a; # views.py from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import render from .models import YourModeldef your…...

centOS安装bochsXshell连接centos启动可视化界面

centOS安装bochs 参考&#xff1a;https://blog.csdn.net/muzi_since/article/details/102559187 首先安装依赖环境&#xff1a; yum install gtk2 gtk2-devel yum install libXt libXt-devel yum install libXpm libXpm-devel yum install SDL SDL-devel yum install libXr…...

mac m2芯片 安装nginx + php + mysql

1.安装homebrew&#xff1a; 系统本身就有&#xff08;命令brew -v查看下&#xff09;&#xff0c;如果没有安装一下 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 2.安装nginx brew install nginx 3.安装php bre…...

vue axios 使用

使用Vue中的Axios需要先安装axios库&#xff0c;可以通过yarn或npm安装&#xff1a; yarn add axios # 或者 npm install axios --save然后在Vue组件中导入axios并使用&#xff1a; import axios from axios;export default {data() {return {responseData: null,error: null…...

Kivy中文显示乱码?3步搞定字体配置(附免费字体下载)

Kivy中文显示乱码&#xff1f;3步搞定字体配置&#xff08;附免费字体下载&#xff09; 当你在Kivy应用中看到中文变成一堆问号或方框时&#xff0c;别急着怀疑人生——这通常是字体配置的小问题。作为Python生态中最受欢迎的跨平台GUI框架之一&#xff0c;Kivy默认使用Roboto字…...

Snes9x音频系统深度探索:Blargg SPC库如何实现高保真声音模拟

Snes9x音频系统深度探索&#xff1a;Blargg SPC库如何实现高保真声音模拟 【免费下载链接】snes9x Snes9x - Portable Super Nintendo Entertainment System (TM) emulator 项目地址: https://gitcode.com/gh_mirrors/sn/snes9x Snes9x作为一款经典的Super Nintendo Ent…...

Python并发安全性重构白皮书(GIL禁用场景下的原子操作黄金标准)

第一章&#xff1a;Python并发安全性重构白皮书&#xff08;GIL禁用场景下的原子操作黄金标准&#xff09;当通过 PyPy、Cython&#xff08;启用 nogil&#xff09;、或 Python 3.12 的实验性子解释器&#xff08;PEP 684&#xff09;等路径绕过全局解释器锁&#xff08;GIL&am…...

3步突破AI编程助手限制:免费解锁Cursor Pro高级功能全指南

3步突破AI编程助手限制&#xff1a;免费解锁Cursor Pro高级功能全指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your…...

AI报告文档审核赋能人才培养:IACheck打造环境检测人机协同审核虚拟仿真新体系

在环境检测行业持续走向精细化与规范化的过程中&#xff0c;报告审核能力逐渐成为影响整体质量的重要因素。然而&#xff0c;与检测设备和分析技术不断升级相比&#xff0c;审核人员的培养却长期依赖经验积累与“师带徒”模式&#xff0c;这种方式虽然能够传递实践经验&#xf…...

PyTorch 2.8镜像真实效果:量子计算电路→量子态演化视频模拟

PyTorch 2.8镜像真实效果&#xff1a;量子计算电路→量子态演化视频模拟 1. 量子计算模拟效果展示 量子计算作为前沿计算领域&#xff0c;其可视化一直是教学和研究的难点。我们使用PyTorch 2.8镜像实现了从量子电路到量子态演化的完整视频模拟流程&#xff0c;以下是关键效果…...

Phi-3-mini-4k-instruct-gguf代码实例:Python requests调用Web API完整示例

Phi-3-mini-4k-instruct-gguf代码实例&#xff1a;Python requests调用Web API完整示例 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本&#xff0c;特别适合问答、文本改写、摘要整理和简短创作等场景。这个经过优化的版本可以直接…...

国家中小学智慧教育平台电子课本高效解决方案:如何突破资源获取瓶颈?

国家中小学智慧教育平台电子课本高效解决方案&#xff1a;如何突破资源获取瓶颈&#xff1f; 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地…...

Ostrakon-VL-8B惊艳效果:同一界面内对比原始图/热力图/标注图三视图

Ostrakon-VL-8B惊艳效果&#xff1a;同一界面内对比原始图/热力图/标注图三视图 1. 像素特工终端&#xff1a;重新定义零售视觉分析 想象一下&#xff0c;当你走进一家零售店铺&#xff0c;能瞬间"扫描"出所有商品的位置、价格标签和货架状态。这正是Ostrakon-VL-8…...

【水声信号处理】突破物理极限:下视多波束声呐超分辨率技术原理与公式详解

【水声信号处理】突破物理极限&#xff1a;下视多波束声呐超分辨率技术原理与公式详解 文章目录【水声信号处理】突破物理极限&#xff1a;下视多波束声呐超分辨率技术原理与公式详解一、 为什么我们需要“超分辨率”&#xff1f;&#xff08;痛点分析&#xff09;二、 声呐回波…...