【小f的刷题笔记】(JS)数组 - 差分数组 LeetCode1109 LeetCode1094

news2024/9/20 18:52:53

【数组】

差分数组:

🌟 频繁对原始数组的某个区间的元素进⾏增减

把每个数与前一个数的差值计算出来存在一个新数组里,区间的加减通过把新数组中区间开始下标的值加/减,区间结束下标对应的值减/加(反一下,因为最后每个数都是通过前一个值得出的)


LeetCode1109

链接:

1109.航班预订统计

题目:

在这里插入图片描述

思路:

-> 就是先定义一个差值数组,所有加的操作先在差值数组中进行,再利用这个差值数组通过第一项,继续推出后面的所有数

在这里插入图片描述

代码:

/**
 * @param {number[][]} bookings
 * @param {number} n
 * @return {number[]}
 */
var corpFlightBookings = function(bookings, n) {
    // 现将nums数组全部赋初值为0
    const nums = new Array(n).fill(0);
    // for-of 数组遍历元素, for-in对象遍历属性
    for(const booking of bookings) {
        nums[booking[0]-1] += booking[2];
        // 后面的值不是最后一个数,就得减
        if(booking[1]<n) {
            nums[booking[1]] -= booking[2];
        }
    }
    for(let i=1; i<n; i++) {
        nums[i] += nums[i-1];
    }
    return nums;
};

LeetCode1094

链接:

1094.拼车

题目:

在这里插入图片描述

思路:

先定义一个差值数组,所有加减操作先在差值数组中进行,再利用这个差值数组通过第一项,继续推出后面的所有数,只要所有元素都比capacity小就行

注意点:

1️⃣ const

​ const声明的变量,不可以修改

​ const声明的数组,数组的元素是可以修改的

​ const声明的对象,对象的属性也是可以修改的

2️⃣ 新建数组

const 数组名 = new Array(数组长度).fill(初值);

3️⃣ [].every(条件)

​ 返回的是boolean

代码:

/**
 * @param {number[][]} trips
 * @param {number} capacity
 * @return {boolean}
 */
var carPooling = function(trips, capacity) {
    // 构建差值数组
    const diff = new Array(1001).fill(0)
    for(const trip of trips) {
        diff[trip[1]] += trip[0]
        diff[trip[2]] -= trip[0] // 这里第三个数是已经放下乘客的位置了,所以直接用下标,不用+1
    }

    // 这里的另一种写法 已知trips数组元素的格式了,就可以直接定义这样的数组,拿数据稍微方便点儿
    // 解构
    // for(const [n, s, e] of trips) {
    //     diff[s] += n
    //     diff[e] -= n
    // }

    let sum = 0
    // 遍历一遍差值数组,算出每个站的乘客数,与capacity比较
    for(let i=0; i<diff.length; i++) {
        sum += diff[i]
        if(sum > capacity) return false
    }
    return true
};

写在最后:
labuladong写得真的好好呀
思路写得比较口语化,之后慢慢改进
还在摸索阶段,加油叭!

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

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

相关文章

软件工程笔记

软件工程软件工程:指导计算机软件系统开发和维护的工程学科:目的:有序,可控,可管理软件工程方法学要素:方法,工具,过程软件:程序数据文档软件分类:软件生命周期补充:软件工程方法:软件生命周期中使用的一整套技术评价标准:软件开发方法:软件工程:指导计算机软件系统开发和维护的…

蓝桥杯时间显示

题目描述 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上&#xff0c;朋友已经获取了当前的时间&#xff0c;用一个整数表示&#xff0c;值为从 19701970 年 11 月 11 日 00:00:0000:00:00 到当前时刻经过的毫秒数。 现在&#xff0c;小蓝要在客户端显示出这个时间。…

[附源码]Python计算机毕业设计Django社区疫情防控信息管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【有营养的算法笔记】快速排序

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;有营养的算法笔记 文章目录一、思路二、模板讲解三、模板测试四、加练 —— 第 K 个数今天正式开启算法笔记…

生产型外协管理系统:功能解析篇

随着经济全球化与电商的全面发展&#xff0c;生产型企业的生产订单是在逐年生产的。由于自身的生产能力有限&#xff0c;很多企业不得不将些许业务进行外包生产&#xff0c;也就是所谓的外协生产。既然需要外协生产的话&#xff0c;那么对外协生产进行管理也就尤为重要了。作为…

[附源码]计算机毕业设计软考刷题小程序Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Express:JSONP 接口

JSONP 接口 1. 回顾 JSONP 的概念与特点 概念&#xff1a;浏览器端通过 <script> 标签的 src 属性&#xff0c;请求服务器上的数据&#xff0c;同时&#xff0c;服务器返回一个函数的调用。这种请求数据的方式叫做 JSONP。 特点&#xff1a; ①JSONP 不属于真正的 Aj…

ASEMI整流桥KBU808参数,KBU808尺寸,KBU808大小

编辑-Z ASEMI整流桥KBU808参数&#xff1a; 型号&#xff1a;KBU808 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;800V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;560V 最大直流阻断电压&#xff08;VDC&#xff09;&#xff1a;800…

Linux学习-72-GRUB加密方法(2种加密方式)

16.14 GRUB加密方法&#xff08;2种加密方式&#xff09; Linux 在启动时&#xff0c;在 GRUB 管理界面中是可以通过按"e"键进入编辑模式&#xff0c;修改启动选项的。每个启动选项都支持按"e"键进入编辑模式。在编辑模式中可以修改启动模式&#xff0c;比…

有必要好好学习一下dc_shell了

首先最好是有design compiler user guide&#xff0c;哪里不会找哪里&#xff1f;然后来看看常见的dc_shell 命令 一般先要起一个dc_shell。 dc_shell 启动以后&#xff0c;使用 read_ddc xxx/DBs/ddc/<block_name>.ddc 将design compiler的综合结果读入。 为了确认读入…

GitHub上热门的Java开源项目

1 JavaGuide https://github.com/Snailclimb/JavaGuide Star 26396 一份Java学习指南&#xff0c;涵盖大部分Java程序员所需要掌握的核心知识 2 DoraemonKit https://github.com/didi/DoraemonKit Star 4826 简称 "DoKit"&#xff0c;中文名哆啦A梦&#xff0c;意…

数学建模三大类模型适用场景及建模方法(纯干货)

目录 一&#xff0c;评价类算法 1&#xff0c;层次分析法 ●基本思想: ●基本步骤: ●优点: ●缺点 ●适用范围: ●改进方法: 2&#xff0c;灰色综合评价法&#xff08;灰色关联度分析&#xff09; ●基本思想: ●基本步骤: ●优点: ●缺点: ●适用范围: ●改进方…

TMS FMX Cloud提供集成元素

TMS FMX Cloud提供集成元素 TMS FMX云包能够为用户和开发人员提供从Firemonkey软件到云光解决方案的可访问性。TMS FMX云包基本上由能够与不同的云解决方案一起提供集成的元素组成。 每当FMX计数增加时&#xff0c;性能就会下降。 有一个基本的设计时集成可用。 基于架构的火猴…

探花交友_第2章_环境搭建(新版)

探花交友_第2章_环境搭建&#xff08;新版&#xff09; 文章目录探花交友_第2章_环境搭建&#xff08;新版&#xff09;课程介绍 《探花交友》1、项目介绍1.1、项目背景1.2、市场分析1.3、目标用户群体1.4、使用场景1.5、竞争对手分析1.5.1、竞品选择1.5.2、竞品分析1.6、项目简…

[数据结构] - 顺序表与链表详解

顺序表和链表同属于线性表&#xff0c;线性表顾名思义&#xff0c;就是连续的一条直线&#xff0c;但它在物理结构上是不一定连续的&#xff0c;通常的线性表用顺序表和链表来实现。下面我们介绍顺序表和链表 文章目录1. 顺序表1.1 顺序表的大致介绍1.2 顺序表的代码实现顺序表…

数据结构练级之路【链表带环问题】

一、链表带环问题的代码和几个经典的面试题&#xff08;重点在于如何算入口点&#xff09; 代码非常的简单&#xff0c;但是有几个关于带环问题的讲解就比较不好理解 1.有关链表是否带环的题目和代码 &#xff08;较难且较经典&#xff09;&#xff08;有关链表带环的问题&a…

《零基础学机器学习》笔记-第1课-MNIST数字识别

机器学习项目的实际过程大致可以分为5个环节&#xff0c;下面以卷积神经网络分析MNIST数据集为例实战一下。 MNIST数据集-卷积神经网络-python源码下载 一、问题定义 MNIST数据集&#xff0c;相当于机器学习领域的Hello World&#xff0c;非常经典&#xff0c;包括60000张训练…

JAVA队列及实现类

什么是队列&#xff1f; 队列是一种特殊的线性表&#xff0c;遵循先入先出、后入后出的基本原则&#xff0c;一般来说&#xff0c;它只允许在表的前端进行删除操作&#xff0c;而在表的后端进行插入操作&#xff0c;但是java的某些队列运行在任何地方插入删除&#xff1b;比如我…

常用网络接口自动化测试框架应用

一、RESTful&#xff08;resource representational state transfer)类型接口测试 (一&#xff09;GUI界面测试工具&#xff1a;jmeter 1、添加线程组 2、添加http请求 3、为线程组添加察看结果树 4、写入接口参数并运行 5、在查看结果树窗口查看结果 6、多组数据可增加CSVDat…

git原理浅析

1.git概念 我们的项目一般由文件夹和文件组成&#xff0c;在文件系统中,基本都是树形结构, 在git中&#xff0c;文件夹称为 “tree” &#xff0c;文件称为 “blob” &#xff0c;顶层文件夹称为 “top-level tree” 。下方的目录结构是个例子而已&#xff1a; . (top-level t…