LC1094.拼车
思路
- 思路非常自然,类似于真实情况的模拟。差分的本质,就是在模拟上车下车情景。
 - 差分的一大作用是减少重复操作
 diff[from] += passengers表示上车- 上车之后人数一直不变,
diff[from + 1] ...统统为0,代表车上的人数没有变化 diff[to] -= passengers表示下车- 对差分数组求和,也得到了当前时刻车上的总人数
 
代码
class Solution {public:    bool carPooling(vector<vector<int>>& trips, int capacity) {        vector<int> diff(1000 + 5, 0);        int n_trips = trips.size();        for (int i = 0; i < n_trips; ++i) {            int passengers = trips[i][0];            int from = trips[i][1];            int to = trips[i][2];            diff[from] += passengers;            diff[to] -= passengers;        }        int cur_sum = 0;        for (int i = 0; i < 1001; i++) {            cur_sum += diff[i];            if (cur_sum > capacity) {                return false;            }        }        return true;    }};