Design a parking system for a parking lot. The parking lot has three kinds of parking spaces: big, medium, and small, with a fixed number of slots for each size.
Implement the ParkingSystem class:
ParkingSystem(int big, int medium, int small) Initializes object of the ParkingSystem class. The number of slots for each parking space are given as part of the constructor.bool addCar(int carType) Checks whether there is a parking space of carType for the car that wants to get into the parking lot. carType can be of three kinds: big, medium, or small, which are represented by 1, 2, and 3 respectively. A car can only park in a parking space of its carType. If there is no space available, return false, else park the car in that size space and return true.
Example 1:
Input ["ParkingSystem", "addCar", "addCar", "addCar", "addCar"] [[1, 1, 0], [1], [2], [3], [1]] Output [null, true, true, false, false] Explanation ParkingSystem parkingSystem = new ParkingSystem(1, 1, 0); parkingSystem.addCar(1); // return true because there is 1 available slot for a big car parkingSystem.addCar(2); // return true because there is 1 available slot for a medium car parkingSystem.addCar(3); // return false because there is no available slot for a small car parkingSystem.addCar(1); // return false because there is no available slot for a big car. It is already occupied.
Constraints:
0 <= big, medium, small <= 1000carType is 1, 2, or 31000 calls will be made to addCarThis approach leverages an array to manage the count of available parking slots for each type of car. The array indices correspond to the car types: index 0 for big cars, index 1 for medium, and index 2 for small. The addCar function decrements the corresponding index if space is available.
The code uses a struct with an array of size 3 to store slots available for each car type. carType is 1-indexed due to the problem constraints but is used as 0-indexed for array access. The parkingSystemAddCar function decrements the respective slot count if the slot is available. Memory is dynamically allocated and should be freed when done.
C++
Java
Python
C#
JavaScript
Time Complexity: O(1) for each addCar operation as we are directly accessing an array element.
Space Complexity: O(1) as only a fixed-size array is used.
This method uses distinct variables to handle each type of car's parking slots. This approach makes the code very clear for small data sets. While this isn't necessarily more efficient than the array method for this particular problem, it offers an alternative for simple systems where explicit clarity is beneficial.
This C implementation uses separate integer variables to track each type of parking slot. Each addCar operation checks the respective variable based on car type and decrements it if possible.
C++
Java
Python
C#
JavaScript
Time Complexity: O(1) for checking and updating.
Space Complexity: O(1) as three variables track the state.
| Approach | Complexity |
|---|---|
| Approach 1: Use Array for Slot Management | Time Complexity: O(1) for each addCar operation as we are directly accessing an array element. |
| Approach 2: Use Separate Variables for Slot Management | Time Complexity: O(1) for checking and updating. |
Parking Lot Design | Grokking The Object Oriented Design Interview Question • Think Software • 352,806 views views
Watch 9 more video solutions →Practice Design Parking System with our built-in code editor and test cases.
Practice on FleetCode