网页设计与网站开发什么区别,html5修改器下载,公司网站域名的设计,如何做网站条幅闪图LeetCode-1094.拼车 题目描述问题分析程序代码 题目描述 原题链接 车上最初有 capacity 个空座位。车 只能 向一个方向行驶#xff08;也就是说#xff0c;不允许掉头或改变方向#xff09;
给定整数 capacity 和一个数组 trips , trip[i] [numPassengersi, fromi, toi] 表… LeetCode-1094.拼车 题目描述问题分析程序代码 题目描述 原题链接 车上最初有 capacity 个空座位。车 只能 向一个方向行驶也就是说不允许掉头或改变方向
给定整数 capacity 和一个数组 trips , trip[i] [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。
当且仅当你可以在所有给定的行程中接送所有乘客时返回 true否则请返回 false。
问题分析
由于车的位置范围为[0, 1000]。因此我们可以使用一个长度为 1000 的数组来记录每个位置的乘客数量。
先遍历trips数组利用差分数组的思想修改某段区间。即若有 c 个乘客在 a 点上车在 b 点下车要对区间[a, b)整体进行加 c 的操作利用差分数组只需要进行nums[a] c和nums[b] - c操作即可。
求完差分数组后对差分数组进行前缀和计算就可以得到每个站点的乘客数量与车的最大容量进行比较便可得到最终答案。
程序代码
class Solution {
public:bool carPooling(vectorvectorint trips, int capacity) {vectorint nums(1010, 0);for(auto t : trips) {nums[t[1]1] t[0];nums[t[2]1] - t[0];}for(int i 1; i 1000; i) {nums[i] nums[i-1];if(nums[i] capacity) return false;}return true;}
};