1094. 拼车(差分堆排序)

Problem: 1094. 拼车

文章目录

  • 题目
  • 思路
    • Review 差分数组
      • 定义
      • 区间加法减法
        • 更新差分数组:
        • 为啥这样更新
  • 思路1 Code
  • 思路2 Code

题目

车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向)

给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。

当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false。

示例 1:

输入:trips = [[2,1,5],[3,3,7]], capacity = 4
输出:false

思路

思路1 : 使用堆排序(优先队列维护),每到一个上车或者下车的位置 统计一下当前车上的人数,如果大于了 capacity 就返回 false

思路2 : 使用差分数组 ,对区间 [ f r o m i from_{i} fromi , t o i to_{i} toi] 同时加 n u m i num_{i} numi。注意在 t o i to_{i} toi时是立即下车

Review 差分数组

定义

对于一个给定的数组 arr[0…n-1],其差分数组 diff[0…n-1] 定义如下:

d i f f [ 0 ] = a r r [ 0 ] diff[0] = arr[0] diff[0]=arr[0]
d i f f [ i ] = a r r [ i ] − a r r [ i − 1 ] diff[i] = arr[i] - arr[i-1] diff[i]=arr[i]arr[i1]
对于所有 0 < i < n 0 < i < n 0<i<n
这意味着 $ diff[i] 存储了 存储了 存储了 arr[i]$和 $arr[i-1] $之间的差值 。

区间加法减法

差分数组的主要用途之一是进行区间加法操作。假设你想对原数组 arr 的子区间 [L, R] 中的所有元素增加一个值 val。使用差分数组,你可以非常高效地完成这个操作:

更新差分数组:

diff[L] += val
如果 R + 1 < n,则 diff[R + 1] -= val.

为啥这样更新

例子 :
image.png

回归到题目 ,我们对 每个 trips的 [ f r o m i from_{i} fromi , t o i to_{i} toi] 同时加Num,统计有没有超过’capacity`。

思路1 Code

class Solution {
public:bool carPooling(vector<vector<int>>& trips, int capacity) {// 创建一个事件列表vector<pair<int, int>> events;for (auto& trip : trips) {events.push_back({trip[1], trip[0]}); // 上车事件events.push_back({trip[2], -trip[0]}); // 下车事件}// 对事件按地点排序sort(events.begin(), events.end());int currentPassengers = 0;for (auto& event : events) {currentPassengers += event.second;if (currentPassengers > capacity) {return false;}}return true;}
};

思路2 Code

class Solution {
public:bool carPooling(vector<vector<int>>& trips, int capacity) {int maxx = 0 ;// 利用差分数组 for(auto & trip: trips ) {maxx = max(maxx ,trip[2]) ; }vector<int> diff(maxx+1) ;// 对区间[L,R]同时加 val // 差分数组 diff[L] +val  diff[R+1] -val for(const auto &trip : trips) {diff[trip[1]] +=trip[0] ; diff[trip[2]] -=trip[0] ;}int count = 0 ; for(int i = 0 ; i<=maxx ; ++i) {count+=diff[i] ; if(count >capacity) {return false ; }}return true ; }
};

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

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

相关文章

高级前端面试中的三个 “送命题” !!!

原型与原型链 说到原型&#xff0c;就不得不提一下构造函数&#xff0c;首先我们看下面一个简单的例子&#xff1a; function Dog(name,age){this.name name;this.age age; }let dog1 new Dog("哈士奇",3); let dog2 new Dog("泰迪",2);首先创造空的…

Mybatis-plus逻辑删除

转载自:www.javaman.cn 1、application.yml配置 mybatis-plus: 表示这是 MyBatis-Plus 的配置部分。global-config: 全局配置。db-config: 数据库相关配置。logic-delete-field: 指定逻辑删除的字段名。在这里&#xff0c;指定的字段名是 deleted。这意味着&#xff0c;当你调…

《算法通关村——滑动窗口高频问题》

《算法通关村——滑动窗口高频问题》 239. 滑动窗口最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#…

机械臂运动规划、抓取末端执行器、抓取开源项目

运动规划 1.1已有抓取点 假设抓取点已检测到。这些方法设计了从机器人手到目标物体抓取点的路径。这里运动表示是关键问题。虽然存在从机器人手到目标抓握点的无限数量的轨迹&#xff0c;但是由于机器人臂的限制&#xff0c;许多区域无法到达。因此&#xff0c;需要对轨迹进行…

Hdoop学习笔记(HDP)-Part.01 关于HDP

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

python etree.HTML 以及xpath 解析网页的工具

文章目录 导入模块相关语法实战 导入模块 from lxml import etree相关语法 XPath&#xff08;XML Path Language&#xff09;是一种用于在XML文档中定位和选择元素的语言。XPath的主要应用领域是在XML文档中进行导航和查询&#xff0c;通常用于在XML中选择节点或节点集合。以…

js 处理编译器html 包含img的标签并设置width

var imgElements document.getElementsByTagName(img); for (let imgElement of imgElements) { //1.如果有style属性,去掉style属性中的width属性和height属性 if (imgElement.hasAttribute(st…

UiPath学习笔记

文章目录 前言RPA介绍UiPath下载安装组件内容 前言 最近有一个项目的采集调研涉及到了客户端的采集&#xff0c;就取了解了一下RPA和UIPATH&#xff0c;记录一下 RPA介绍 RPA&#xff08;Robotic Process Automation&#xff1a;机器人处理自动化&#xff09;&#xff0c;是…

【影视后期扩展课-01】

影视后期扩展课-01 福利网站 福利网站 【电影下载】 ■皮皮虾资源&#xff1a;https://ppxzy.net/ ■电影港网&#xff1a;https://www.dyg5.com/ ■人人网&#xff1a;https://www.rrdynb.com/index.html ■高清MP4&#xff1a;https://mp4fan.org/member.php?modlogging&am…

使用Zabbix监控openstack的系统资源

1 简介 对于Openstack运维人员来说&#xff0c;需要掌握Openstack云平台系统资源的整体运行情况&#xff0c;包括域(AZ)的cpu/menmory等资源使用情况&#xff1b;本文将介绍使用zabbix结合openstack python-api对openstack系统资源进行监控。 2 使用控制台获取域(AZ)监控信息 …

pta模拟题(7-15 BCD解密、7-16 数列求和-加强版、7-17 出租、7-18 反向数相加、7-19 一帮一、7-20 连续因子)

7-15 BCD解密 BCD数是用一个字节来表达两位十进制的数&#xff0c;每四个比特表示一位。所以如果一个BCD数的十六进制是0x12&#xff0c;它表达的就是十进制的12。但是小明没学过BCD&#xff0c;把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制…

JS 实现一键复制文本内容

1、演示&#xff1a; 2、代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>一键复制</title&g…

羊大师分析,鲜羊奶对健康的影响与作用

羊大师分析&#xff0c;鲜羊奶对健康的影响与作用 你是否曾经听到过“羊奶比牛奶更健康”的说法&#xff1f;而鲜羊奶作为最纯正的羊奶形式&#xff0c;其营养价值更是不可小觑。除了拥有传统奶类所包含的营养成分外&#xff0c;鲜羊奶还含有更多人体必需的氨基酸和微量元素&a…

更有效的问卷发布方法与必备问卷工具推荐

问卷怎么发&#xff1f;通过哪些渠道发&#xff1f;怎么发收集的数量更多&#xff1f;怎么获得有效数据&#xff1f;这些是做问卷的调查人员经常会遇到的问题。的确&#xff0c;问卷的发放是否有效不仅会影响到收集数据的体量&#xff0c;更会影响到最终结论的真实性。所以&…

centos7 yum安装mysql5.7

1.获取源 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 2.安装源 yum -y install mysql57-community-release-el7-11.noarch.rpm 3.安装mysql yum -y install mysql-server 4.如果出现下面错误&#xff0c;没有错误就忽略 使用以下命令解决…

Mysql 中日期比较大小的方法有哪些?

在 MySQL 中&#xff0c;你可以使用多种方法来比较日期的大小。以下是一些常用的方式&#xff1a; 使用比较运算符&#xff1a; SELECT * FROM your_table WHERE your_date_column > 2023-01-01; 这将选择日期列值大于 2023-01-01 的所有记录。 使用比较运算符和 NOW() …

数据结构-带头双向循环链表

文章目录 一.头结点二.双链表1双链表的概念与结构2.与单链表相比 三.循环链表1.关于循环链表2.循环链表的优点 四.带头双向循环链表1.带头双向循环链表2.结构图3.实现 五.代码一览 一.头结点 在链表中设置头结点的作用是什么 标识链表:头结点是链表的特殊节点,它的存在能够明确…

Mongodb安装及其使用

1.Linux系统上安装Mongodb 在usr/local文件夹下创建mongo文件夹 下载mongodb包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.5.tgz解压mongodb tar -zxvf mongodb-linux-x86_64-rhel70-6.0.5.tgz更改文件夹的名字 mv mongodb-linux-x86_64-rh…

PostgreSQL对比Mysql

PostgreSQL对比Mysql 一、PostgreSQL的应用场景 Web应用程序开发&#xff1a;PostgreSQL作为可靠的关系型数据库系统&#xff0c;广泛用于Web应用程序的数据存储和管理。它适用于各种规模的Web应用&#xff0c;从小型博客到大型电子商务平台都可以使用PostgreSQL来存储用户数…

RCE绕过

1.[SCTF 2021]rceme 总结下获取disabled_funciton的方式 1.phpinfo() 2.var_dump(ini_get(“disable_functions”)); 3.var_dump(get_cfg_var(“disable_functions”)); 其他的 var_dump(get_cfg_var(“open_basedir”)); var_dump(ini_get_all()); <?php if(isset($_POS…