LeetCode 任意子数组和绝对值的最大值(JavaScript)

article/2025/10/4 7:24:36

这道题目,我是通过看题解,然后通过自己思考才写出来的,第一次写博客,如果有不好之处,请谅解。

写这个题目之前,我们先了解一下前缀和,通过下面例子,或许你就明白了什么是前缀和了。

假设我们有一个数组 nums = [1,-3,2,3,-4];

那么preSum=[0,1,-2,0,3,-1].

也就是说 preSum = [0,1,1+(-3),1+(-3)+2,1+(-3)+2+3,1+(-3)+2+3+(-4)];

最简单粗暴的办法就是利用双层 for 循环,那么可能有人注意到了

preSum[i]=nums[i]+preSum[i-1] 这个关系

也有人发现了,preSum[0]这个数,为了方便,我们可以把它设置为0,这样就不会影响后面的数的和。我的做法是先把他设置为0,到后面运算完了之后,通过 shift 方法把它删除,这样就不会影响后面的题目了。所以preSum的长度我们可以先设置为 nums.length。

如果理解了,可以去做LeetCode上第1480这道题

 如果这道题做对了,那么你就成功了一大半,可能我讲的也不是很清楚,实在不理解的,也可以看下我对这道题通过的代码,或许有些人和我一样,通过看代码更能理解明白一点。

下面的代码是 JavaScript 写的

var runningSum = function (nums) {let preSum = [0];preSum.push(nums[0]);for (let i = 1; i < nums.length; i++) {preSum.push(preSum[i] + nums[i]);}preSum.shift();return preSum;};

我们可以先求出 preSum 中的最大值,最小值。接着可以分三种情况就可以得到和的绝对值的最大值了。

下面是我手写的,字可能有点丑,请谅解:

 当最大值和最小值异号的时候,我们可以通过 preSum 数组中的最大值 - preSum 数组中的最小值,通过上图可以看到 preSum 最大值是3,preSum 最小值是 -2 ,可以看出[2,3]子数组的和的绝对值是最大值。

 当 preSum 的最大值 和 preSum 的最小值都为负号的时候,这时候子数组的和的绝对值的最大值就是 最小值的绝对值。

 当 preSum 的最大值 和 preSum 的最小值都为正号的时候,这时候子数组的和的绝对值的最大值就是 最大值的绝对值。

下面是我通过这个题的代码:

var maxAbsoluteSum = function (nums) {let preSum = [0];preSum.push(nums[0]);for (let i = 1; i < nums.length; i++) {preSum.push(preSum[i] + nums[i]);}preSum.shift();let max = Math.max.apply(null, preSum);let min = Math.min.apply(null, preSum);let result = Math.max(Math.abs(max - min), Math.abs(max), Math.abs(min));return result;};

 如果还有不懂的,可以评论区问我,我看到就会回的


http://chatgpt.dhexx.cn/article/frMHjZVE.shtml

相关文章

常用JavaScript控制结构语句,绝对值,累加,阶乘,循环

计算一个数的绝对值 function abs(x) {if (x > 0) {return x;} else {return -x;} } console.log(abs(10) abs(-10)); //>true计算数组元素之和 let arr [1, 3, 5];function sum(array) {let sum 0;for (let x of array) { //循环数组把每个元素赋给xsum x;}return…

02-Node.js基础(一)

目录 一、什么是Node.js二、Node.js在软件架构中的地位三、Node.js 可以做什么&#xff08;作用&#xff09;浏览器端的 JavaScriptNode端的JavaScript 四、Node.js APIsWeb端APINode.js端APIWeb端JS与Node端JS对比 五、安装 Node.js第一步&#xff1a;在官网下载 Node.js 安装…

vue取绝对值

先放效果&#xff1a; 代码 <template><el-input v-model"num" placeholder"请输入数字" /><el-button type"primary" click"changeNum">取绝对值</el-button> </template> import { ref } from &quo…

关于JSZIP压缩图片打包下载的一些用法

功能介绍 前端在处理一些批量文件或者图片时候&#xff0c;通过使用异步上传&#xff0c;减少表单一次性提交的的数据量。并将这些图片或者文件根据用户自定义压缩、分类保存到本地。是一个用于压缩文件和解压的JavaScript库。 官网地址 https://stuk.github.io/jszip/docume…

jsZip将多个文件压缩成一个压缩包

在项目开发中&#xff0c;搭档大佬要做一个断点续传的功能&#xff0c;让我帮忙研究一下前端将多个文件压缩成一个压缩包的方法&#xff0c;所以就有了这篇文章。 我的demo是写在vue中的&#xff0c;所以首先要有一个vue环境&#xff0c;才能进行接下来的步骤。那么下面我们就…

前端vue使用jszip压缩文件

一.引入element的上传文件组件 <el-form-item label"文件"><el-uploadclass"upload-demo"dragaction"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"multiple:before-upload"beforeUpload"><el-icon …

vue3中使用jszip压缩文件

1、安装依赖 npm install jszip npm install file-saver --save 2、使用 <template><el-card class"mb15"><template #header><span>jszip</span></template><!-- 二维码容器 --><div id"qrCodeBox">&…

docxtemplater、pizzip、jszip-utils、file-saver 前端实现导出word

一、准备工作 1、插件安装&#xff1a; npm i docxtemplater pizzip jszip-utils file-saver -S2、安装完成&#xff1a; 3、导出的模板文件。 我这里是将其命名word-export.docx,并将其放在public/docxs目录下&#xff0c;如图所示&#xff1a; 二、实现代码 页面使用&…

【sduoj】前端JSZip库的使用

2021SCSDUSC 文章目录 JSZIP安装使用引入实例化读取zip文件读取压缩包中的文件遍历压缩包内的所有文件&#xff08;单层&#xff09; 小结 JSZIP JSZip是一个用于创建、读取和编辑.zip文件的javascript库&#xff0c;具有好用而简单的 API。 安装 在sduoj项目中&#xff0c…

zipJS 前端压缩使用

前端在处理文件时&#xff0c;对于大文件或者多个文件上传、下载、编辑&#xff0c;直接使用原文件不方便&#xff0c;最近使用一个可以前端中处理 zip 文件的库&#xff0c;JSzip&#xff0c;主要功能&#xff1a;前端中压缩、解压缩、编辑zip文件。 在 nodeJS 中&#xff0…

一篇文章介绍JSZip预览压缩包中的文件

安装依赖 npm i jszip 前提准备 准备好一个压缩包&#xff0c;格式为zip&#xff0c;存放两张png图片。 代码实现 <template><h1>JSZip,预览压缩包中的文件</h1><img v-for"(n,m) in picArr.arr":src"n":style"{width:200px}&qu…

VUE+jszip实现下载多个文件导出为一个zip格式

项目需求&#xff1a;将多个文件/图片导出为一个zip格式压缩包&#xff0c;点击<下载全部附件>按钮下载上面三个文件 1、安装jszip和file-saver插件 npm install jszip npm install file-saver2、在所需页面引入 import JSZip from "jszip";import FileSaver …

前端js使用jszip实现文件压缩功能

一、jszip下载 1、github下载地址&#xff1a;https://github.com/Stuk/jszip 2、下载成功后解压&#xff0c;js插件在dist目录里 二、引入jszip插件 <script type"text/javascript" src"./jszip.min.js"></script> 三、使用jszip对文件进…

JSZip 的简单介绍

1、前言 前端处理一些批量文件或者图片时候&#xff0c;通过使用异步上传&#xff0c;减少表单一次性提交的的数据量。但是图片或者文件有删除的时候&#xff0c;服务器上真实的图片不容易删除。找了一些资料发些了JSZip这个技术&#xff0c;可以将文件或者图片打包成一个Zip文…

vue前端下载——jszip压缩和解压,结合file-saver导出图片zip,每20个图片分一个目录

使用jszip和file-saver导出图片&#xff0c;并打包为zip&#xff1a; import JSZip from "jszip"; import FileSaver from "file-saver"; 一&#xff0c;jszip解压缩 使用loadAsync&#xff0c;zipFile为压缩包&#xff0c;下面的例子表示读取zip中的resul…

Nginx工作原理和优化总结。

NGINX以高性能的负载均衡器&#xff0c;缓存&#xff0c;和web服务器闻名&#xff0c;驱动了全球超过 40% 最繁忙的网站。在大多数场景下&#xff0c;默认的 NGINX 和 Linux 设置可以很好的工作&#xff0c;但要达到最佳性能&#xff0c;有些时候必须做些调整。首先我们先了解其…

Nginx详细原理

1、Nginx高可用版原理 nginx采用主从架构&#xff0c;客户端发送请求给master&#xff0c;然后由master下发任务到worker实现。 2、nginx任务分配机制(worker工作机制) nginx中master和woker进程之间使用的不是一种轮询的方式而是争抢机制&#xff0c;由于worker不支持java语言…

nginx的工作原理及配置

nginx的工作原理及配置 nginx的模块与工作原理 nginx由内核和模块组成。其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是nginx配置中的一个指令&…

服务器 启动多个nginx_Nginx工作原理和优化总结

NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站。 在大多数场景下,默认的 NGINX 和 Linux 设置可以很好的工作,但要达到最佳性能,有些时候必须做些调整。首先我们先了解其工作原理。 一、Nginx的模块与工作原理 Nginx由内核和模块组成…

Nginx工作原理及基本使用

Nginx工作原理 Nginx默认采用多进程工作方式&#xff0c;Nginx启动后&#xff0c;会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口&#xff0c;同时对进程进行监护&#xff0c;管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文…