手机网站开发公司电话,文职人员招聘2023官网,怎么登录小程序平台,优化网站推广说在前面 #x1f388;不知道大家对于算法的学习是一个怎样的心态呢#xff1f;为了面试还是因为兴趣#xff1f;不管是出于什么原因#xff0c;算法学习需要持续保持。 题目描述
车上最初有 capacity 个空座位。车 只能 向一个方向行驶#xff08;也就是说#xff0c;不…说在前面 不知道大家对于算法的学习是一个怎样的心态呢为了面试还是因为兴趣不管是出于什么原因算法学习需要持续保持。 题目描述
车上最初有 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 1000trips[i].length 31 numPassengersi 1000 fromi toi 10001 capacity 10^5
解题思路
这是一道比较简单差分数组的应用题 初始化一个长度为 1005 的数组 arr用于存储每个时间点的乘客数量。数组的索引代表时间点数组的值代表该时间点的乘客数量。数组使用 fill(0) 初始化意味着所有时间点的初始乘客数量为 0。 遍历 trips 数组中的每个行程 trip。对于每个行程执行以下操作 在出发时间 trip[1] 上增加乘客数量 trip[0]即上车人数。在到达时间 trip[2] 上减少乘客数量 trip[0]即下车人数。 遍历数组 arr累加每个时间点的乘客数量。这样做的目的是为了计算每个时间点的总乘客数量考虑到之前的乘客可能在更早的时间点上车或下车。 在累加过程中检查任何时间点的总乘客数量是否超过了车辆的容量 capacity。如果是返回 false表示在某个时间点车上的乘客数量超过了车辆的容量。 如果遍历完整个数组后没有发现超过容量的情况返回 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现在是一名前端工程师有空会刷刷算法题平时喜欢打羽毛球 平时也喜欢写些东西既为自己记录 也希望可以对大家有那么一丢丢的帮助写的不好望多多谅解 写错的地方望指出定会认真改进 偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章有兴趣的也可以关注下。在此谢谢大家的支持我们下文再见 。