首页 > 试题广场 >

自动管理停车场桩位系统

[编程题]自动管理停车场桩位系统
  • 热度指数:665555 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
{\hspace{15pt}}重生之全球机动车驾驶能力下降一百倍而不变...
{\hspace{15pt}}重生了,这一世,学会侧方位停车的人就可以统领全世界。因为大部分车主都不会侧方位停车,所以聪明的你发明了 单车道单出入口停车场,如图所示。这样,虽然停在最里面的车的车主要想驶离停车场,就必须要先等到后面的车全部驶离,但至少避免了高难度的侧方位停车,实在是利国利民的伟业!
{\hspace{15pt}}

{\hspace{15pt}}聪明的你决定再编写一个自动管理停车场桩位系统,可以处理以下四种信息:
{\hspace{20pt}}_\texttt{1.}\,有车靠近:此时,传感器会向你的程序发起函数 \text{top()} 的调用,你的程序需要返回目前单车道停车场里最靠近出/入口位置(即图中停车位编号最大的有车位置)的车辆的车辆编号。
{\hspace{20pt}}_\texttt{2.}\,有车驶入:此时,传感器会自动识别出该车的车辆编号 x1 \leqq x \leqq 10^9,并向你的程序发起函数 \text{push(x)} 的调用,你的程序需要记录下这辆车驶入的信息,随后该车将会默认停在该停车场里离出/入口位置最远的车位(即图中停车位编号最小的无车位置)
{\hspace{20pt}}_\texttt{3.}\,有车驶离:此时,传感器不会识别出该车的车辆编号,而是直接向你的程序发起函数 \text{pop()} 的调用,你的程序需要先搞明白是哪辆车驶离了,然后记录下这辆车驶离的信息。
{\hspace{20pt}}_\texttt{4.}\,有人显得无聊来找事:此时,这个无聊的人会向你的传感器提问 “目前停车场内车辆编号最小的车的编号是多少?”,传感器显然不知道答案,所以会直接向你的程序发起函数 \text{min()} 的调用,你的程序需要计算出这个无聊的人提问的结果,并作为返回值传递给传感器,从而把这个无聊的人打发走。

{\hspace{15pt}}测试数据保证传感器调用函数的总次数不超过 10^4,虽然如此,建议您尝试让每个函数的调用时间复杂度优化到 O(1)

示例1

输入

 ["PSH-1","PSH2","MIN","TOP","POP","PSH1","TOP","MIN"]

输出

-1,2,1,-1

说明

"PSH-1"表示编号为 -1 的车驶入了停车场,停车场中车辆编号依次为为:-1
"PSH2"表示编号为 2 的车驶入了停车场,停车场中车辆编号依次为为:2 -1
"MIN"表示获取此时停车场中最小车辆编号==>返回 -1
"TOP"表示获取车辆编号最外侧车辆的编号==>返回 2
"POP"表示车辆 2 驶离了停车场,停车场中车辆编号依次为为:-1
"PSH1"表示编号为 1 的车驶入了停车场,停车场中车辆编号依次为为:1 -1
"TOP"表示获取车辆编号最外侧车辆的编号==>返回 1
"MIN"表示获取此时停车场中最小车辆编号==>返回 -1
class Solution:
    def __init__(self) -> None:
        self.stack = []

    def push(self, node):
        return self.stack.append(node)

    def pop(self):
        # write code here
        return self.stack.pop()

    def top(self):
        # write code here
        return self.stack[-1]

    def min(self):
        # write code here
        return min(self.stack)
发表于 2025-07-19 22:24:33 回复(0)