题解 P1165 【日志分析】

这真的是一道栈的练手好题啊

但是楼下没讲清楚,我来补充一下

个人一开始用栈模拟,A了一半,剩下超时……

果断地重构代码

终于,想明白了楼下的思路:

指令边读边做,

然后:

分几种情况:

  1. 操作0(集装箱进库操作,相当于进栈),如果输入的数小于之前的最大值,就仍然存储原来的最大值因为后进先出,当前的如果小,永远不可能被2询问到,所以存了也没用(这一点我认为楼下解释地很清楚),不然入栈,栈顶+1

  2. 操作1(集装箱出库操作,相当于出栈),直接栈顶-1

  3. 操作2(集装箱询问操作,由于此时的栈顶是最大值,可以直接输出)

这不就做完了吗?

至于代码,这次我就不贴了,楼下有代码,如果你看不懂,就多看几遍,应该能懂

PS:希望题解审核能过,这是我第一次发没有代码的题解,自认为可以理解我的解释