用示例1画图举例:
注意这里[2, 1, 5]意思是有2个人从第一站坐到第五站,人在车上的站实际只有1到4,因为第五站已经下车了,[3, 3, 7]同理。然后发现在第三第四站车上的人数都超过了载人数4,所以错误。
class Solution {
public:
bool carPooling(vector<vector<int>>& trips, int capacity) {
vector<int> diff(1001, 0);
for (auto it = trips.begin(); it != trips.end(); it++)
{
int l = (*it)[1], r = (*it)[2] - 1, val = (*it)[0];
diff[l] += val;
if (r + 1 < diff.size())
diff[r + 1] -= val;
}
vector<int> ans(1001, 0);
ans[0] = diff[0];
for (int i = 1; i < diff.size(); i++)
ans[i] = ans[i - 1] + diff[i];
for (int i = 0; i < ans.size(); i++)
if (ans[i] > capacity)
return false;
return true;
}
};