1094. 拼车

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1094. 拼车相关的知识,希望对你有一定的参考价值。

1094. 拼车

一、题目

车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向)

给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。

当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false。

二、参考代码

2.1 暴力法


class Solution 
    public boolean carPooling(int[][] trips, int capacity) 
        int[] num = new int[1001];
        for(int[] trip : trips)
            int start = trip[1];
            int end = trip[2];
            int val = trip[0];
            for(int i = start; i < end; i++ )
                num[i] += val;
                if(num[i] > capacity)
                    return false;
                
            
        
        return true;
    


2.2 差分数组法


class Solution 
    public boolean carPooling(int[][] trips, int capacity) 
        int sites[] = new int[1001];
        for (int[] trip : trips) 
            // 上车加
            sites[trip[1]] += trip[0];
            // 下车减
            sites[trip[2]] -= trip[0];
        
        // 从始发站计数,超过capacity则超载
        int total = 0;
        for (int i : sites) 
            total += i;
            if (total > capacity) 
                return false;
            
        
        return true;
    


以上是关于1094. 拼车的主要内容,如果未能解决你的问题,请参考以下文章

P1977 出租车拼车

(高小德用车)高仿滴滴/快的应用源代码

滴滴打车好不好,

PTA刷题——出租车计价

PTA练习题之7-1 出租车计价(15 分)

Braintree 生产帐户请求被拒绝