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

1094. 拼车

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

车上最初有 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

示例 2:

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

提示:

  • 1 <= trips.length <= 1000
  • trips[i].length == 3
  • 1 <= numPassengersi <= 100
  • 0 <= fromi < toi <= 1000
  • 1 <= capacity <= 10^5

解题思路

这是一道比较简单差分数组的应用题:

  1. 初始化一个长度为 1005 的数组 arr,用于存储每个时间点的乘客数量。数组的索引代表时间点,数组的值代表该时间点的乘客数量。数组使用 fill(0) 初始化,意味着所有时间点的初始乘客数量为 0。

  2. 遍历 trips 数组中的每个行程 trip。对于每个行程,执行以下操作:

    • 在出发时间 trip[1] 上增加乘客数量 trip[0](即上车人数)。
    • 在到达时间 trip[2] 上减少乘客数量 trip[0](即下车人数)。
  3. 遍历数组 arr,累加每个时间点的乘客数量。这样做的目的是为了计算每个时间点的总乘客数量,考虑到之前的乘客可能在更早的时间点上车或下车。

  4. 在累加过程中,检查任何时间点的总乘客数量是否超过了车辆的容量 capacity。如果是,返回 false,表示在某个时间点,车上的乘客数量超过了车辆的容量。

  5. 如果遍历完整个数组后没有发现超过容量的情况,返回 true,表示车辆可以容纳所有行程的乘客。

AC代码

/*** @param {number[][]} trips* @param {number} capacity* @return {boolean}*/
var carPooling = function (trips, capacity) {const arr = new Array(1005).fill(0);trips.forEach((trip) => {arr[trip[1]] += trip[0];arr[trip[2]] -= trip[0];});for (let i = 0; i < arr.length; i++) {arr[i] += arr[i - 1] || 0;if (arr[i] > capacity) return false;}return true;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

http://www.lryc.cn/news/317306.html

相关文章:

  • Docker进阶:深入了解容器数据卷
  • 升级版本彻底解决bootstrap-table-fixed-columns固定列后行对不齐问题
  • 打破边界:深入探索STUN在实现无缝NAT穿越和WebRTC通信中的核心作用
  • 浅谈 前端的动态绑定属性
  • Sklearn支持向量机
  • 【Lazy ORM】 小工具 acw 本地客户端 你负责点击页面,他负责输出代码
  • 《详解:鸿蒙NEXT开发核心技术》
  • 快速排序 刷题笔记
  • DAY by DAY 史上最全的Linux常用命令汇总----man
  • 十六、接口隔离原则、反射、依赖注入
  • Docker 进阶
  • 科研学习|论文解读——一种修正评分偏差并精细聚类中心的协同过滤推荐算法
  • 云计算项目十一:构建完整的日志分析平台
  • 2.经典项目-海量用户即使通讯系统
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的交通标志识别系统详解(深度学习模型+UI界面代码+训练数据集)
  • VMware下创建虚拟机
  • 基于Ambari搭建大数据分析平台
  • Vue template到render过程,以及render的调用时机
  • 阿里云服务器Ngnix配置SSL证书开启HTTPS访问
  • 12 list的使用
  • 控件交互与视图交互的区别
  • 打包 加載AB包 webGl TextMeshPro 變紫色的原因
  • 美易官方:去年全球企业派息1.66万亿美元创新高
  • 基于Springboot的面向智慧教育的实习实践系统设计与实现(有报告)。Javaee项目,springboot项目。
  • 【数据库-黑马笔记】基础-SQL
  • MySQL性能分析:性能模式和慢查询日志的使用
  • 【哈希表算法题记录】15. 三数之和,18. 四数之和——双指针法
  • 代码随想录算法训练营Day44 ||leetCode 完全背包 || 518. 零钱兑换 II || 377. 组合总和 Ⅳ
  • RabbitMQ发布确认高级版
  • 【阿里云系列】-基于云效构建部署Springboot项目到ACK