思路:
这道题有很多种解法,刚好最近在学差分,就用差分做吧。首先是初始没有乘客,差分diff数组各项为0,不用求差构造差分数组了。接着是每一次乘车方案,起点站需要加上乘客数,终点站需要减去乘客数。注意:乘车区间是前闭后开的,因为终点站乘客下车了以后还可以继续拉客。(这里坑了我一会儿)
参考代码:
class Solution {
public:bool carPooling(vector<vector<int>>& trips, int capacity) {int diff[1005] = {0};int n = trips.size();int num, first, last;for(int i = 0; i < n; i++){num = trips[i][0];first = trips[i][1];last = trips[i][2];diff[first] += num;diff[last] -= num;}for(int i = 1; i < 1005; i++)diff[i] += diff[i-1];for(int i = 0; i < 1005; i++)if(diff[i] > capacity)return false;return true;}
};