专门做销售培训的网站,国内wordpress大牛,电子商务网站建设方案,张家界酒店网站建设1094. 拼车
车上最初有 capacity 个空座位。车 只能 向一个方向行驶#xff08;也就是说#xff0c;不允许掉头或改变方向#xff09;
给定整数 capacity 和一个数组 trips , trip[i] [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客#xff0c;接…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 105
我的代码实现如下使用了差分法
#include iostream
#include vectorbool carPooling(std::vectorstd::vectorint trips, int capacity) {const int maxLocation 1001; // 最大位置数根据题目要求设定// 创建差分数组初始化为0std::vectorint diff(maxLocation, 0);// 更新差分数组for (const auto trip : trips) {diff[trip[1]] trip[0]; // 乘客在 fromi 上车diff[trip[2]] - trip[0]; // 乘客在 toi 下车}// 模拟行车过程并实时检查是否超过最大载客量int currentPassengers 0;for (int i 0; i maxLocation; i) {currentPassengers diff[i];if (currentPassengers capacity) {return false; // 在某个时刻超过了最大载客量}}return true;
}int main() {std::vectorstd::vectorint trips {{4, 5, 6}, {6, 4, 7}, {4, 3, 5}, {2, 3, 5}};int capacity 13;bool result carPooling(trips, capacity);std::cout std::boolalpha result std::endl; // 输出 truereturn 0;
}在这里给出了完整代码至于使用差分法是因为它可以高效处理数组元素的区间修改正好与该题对应,使用迭代差分即可ac