0
点赞
收藏
分享

微信扫一扫

Leetcode 1094.拼车 差分

彪悍的鼹鼠 2022-04-03 阅读 45
leetcode

思路:
这道题有很多种解法,刚好最近在学差分,就用差分做吧。首先是初始没有乘客,差分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;
    }
};
举报

相关推荐

0 条评论