1603. 设计停车系统

307 阅读2分钟

这是我参与8月更文挑战的第24天,活动详情查看:8月更文挑战

1603. 设计停车系统

请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。

请你实现 ParkingSystem 类:

ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数目。 bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType 有三种类型:大,中,小,分别用数字 1, 2 和 3 表示。一辆车只能停在 carType 对应尺寸的停车位中。如果没有空车位,请返回 false ,否则将该车停入车位并返回 true 。

示例 1:

输入: ["ParkingSystem", "addCar", "addCar", "addCar", "addCar"] [[1, 1, 0], [1], [2], [3], [1]] 输出: [null, true, true, false, false]

解释: ParkingSystem parkingSystem = new ParkingSystem(1, 1, 0); parkingSystem.addCar(1); // 返回 true ,因为有 1 个空的大车位 parkingSystem.addCar(2); // 返回 true ,因为有 1 个空的中车位 parkingSystem.addCar(3); // 返回 false ,因为没有空的小车位 parkingSystem.addCar(1); // 返回 false ,因为没有空的大车位,唯一一个大车位已经被占据了

解题思路

题目解析:存在三种停车位:大、中、小,每次调用 addCar(carType) 的时候,我们就需要在对应的车型的停车位增加一辆车,如果该车型没有剩余空位,就说明无法停车。我们需要做的就是判断每次调用 addCar 时能否停车。

注意:本题的车位中的车只增加不减少

用三个变量big,medium,small分别维护各类车型的剩余空位的数目,每次 addCar(carType) 的时候就把对应类型的停车空位数目 - 1。如果当前车型的剩余空位数目 == 0,那么说明无法再停车了,就返回 False;否则说明可以停车,就返回 True。

代码

    class ParkingSystem {

        int big,medium,small;

        public ParkingSystem(int big, int medium, int small) {
            this.big = big;
            this.medium = medium;
            this.small = small;
        }

        public boolean addCar(int carType) {

            if(carType==1)
                return --big>=0;
            else if(carType==2)
                return --medium>=0;
            else return --small>=0;

       }
    }

/**
 * Your ParkingSystem object will be instantiated and called as such:
 * ParkingSystem obj = new ParkingSystem(big, medium, small);
 * boolean param_1 = obj.addCar(carType);
 */