车上最初有 capacity 个空座位。车只能向一个方向行驶(也就是说,不允许掉头或改变方向)
给定整数 capacity 和一个数组``trips, trip[i] = [numPassengers_i, from_i, to_i]表示第i次旅行有numPassengers_i乘客,接他们和放他们的位置分别是from_i和to_i` 。这些位置是从汽车的初始位置向东的公里数。
当且仅当你可以在所有给定的行程中接送所有乘客时,返回 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
-
这里只要保证整个行车过程中不会超载就可以啦~
-
使用一个map
保存每个时间点对应的人数变化量,由于map自动排序,故第二次遍历时就是按照时间由小到大进行的 -
再次遍历map的过程中,每次让capacity(剩余容量)根据所保存的信息进行变化,如果出现capacity < 0(即超载),那么返回false
-
不满足条件的情况
-
满足条件的情况
class Solution {
public:
bool carPooling(vector>& trips, int capacity) {
map mp;
for (auto& vec : trips) {
mp[vec[1]] -= vec[0];
mp[vec[2]] += vec[0];
}
for (auto& p : mp) {
capacity += p.second;
if (capacity < 0)
return false;
}
return true;
}
};
有收获的话,求个赞~ Click Here
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/car-pooling/



