设计停车系统
难度:
标签:
题目描述
代码结果
运行时间: 75 ms, 内存: 16.6 MB
/*
* 题目思路:
* 1. 我们需要实现一个停车系统,这个系统有三种类型的停车位:大、中、小。
* 2. ParkingSystem 类包含一个构造函数和一个 addCar 方法。
* 3. 构造函数接受三个参数,分别是大、中、小停车位的数量,并初始化对应的成员变量。
* 4. addCar 方法接受一个 carType 参数,根据车的类型判断是否有对应的空位,
* 如果有空位则返回 true 并减少该类型的空位数量,否则返回 false。
* 5. 使用 Stream API 来简化代码逻辑。
*/
import java.util.Map;
import java.util.stream.IntStream;
public class ParkingSystem {
private final Map<Integer, Integer> parkingSlots;
// 构造函数初始化各类型停车位的数量
public ParkingSystem(int big, int medium, int small) {
parkingSlots = Map.of(1, big, 2, medium, 3, small);
}
// 根据 carType 添加车辆
public boolean addCar(int carType) {
return parkingSlots.computeIfPresent(carType, (key, value) -> value > 0 ? value - 1 : value) > 0;
}
}
解释
方法:
题解的核心思路是创建一个数组来存储每种车位的数量(大,中,小)。构造函数接收三种车位的数量并初始化数组。在addCar方法中,根据车辆类型(由carType - 1得到的索引),检查相应车位是否还有空间。如果有空间,就对应车位数量减一并返回true表示停车成功;如果没有空间,则直接返回false。
时间复杂度:
O(1)
空间复杂度:
O(1)
代码细节讲解
🦆
构造函数中的数组初始化方式是否有考虑到异常情况,例如输入的车位数量为负数?
▷🦆
在addCar方法中,如果连续调用多次对同一类型车位进行停车操作,会不会出现车位数变为负数的情况?
▷🦆
类如何处理当车位已满但继续尝试停车的情况,除了返回false之外,是否有其他的错误提示或处理机制?
▷🦆
addCar函数中直接修改数组元素的做法是否线程安全,如果不是,应如何改进以支持多线程环境?
▷