天天看點

LeetCode-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 ,因為沒有空的大車位,唯一一個大車位已經被占據了

提示:

0 <= big, medium, small <= 1000

carType 取值為 1, 2 或 3

最多會調用 addCar 函數 1000 次

水題壓驚:

#include <iostream>
using namespace std;

class ParkingSystem {
public:
    ParkingSystem(int big, int medium, int small) {
        bigNum = big;
        mediumNum = medium;
        smallNum = small;
    }

    bool addCar(int carType) {
        int isSucc = false;
        switch (carType)
        {
        case 1:
            if (bigNum > 0) {
                bigNum--;
                isSucc = true;
            }
            break;
        case 2:
            if (mediumNum > 0) {
                mediumNum--;
                isSucc = true;
            }
            break;
        case 3:
            if (smallNum > 0) {
                smallNum--;
                isSucc = true;
            }
            break;
        default:
            printf("unknow cartype:%d", carType);
            break;
        }
        return isSucc;
    }
private:
    int bigNum;
    int mediumNum;
    int smallNum;
};