题解 P1165 【日志分析】
这真的是一道栈的练手好题啊
但是楼下没讲清楚,我来补充一下
个人一开始用栈模拟,A了一半,剩下超时……
果断地重构代码
终于,想明白了楼下的思路:
指令边读边做,
然后:
分几种情况:
操作0(集装箱进库操作,相当于进栈),如果输入的数小于之前的最大值,就仍然存储原来的最大值因为后进先出,当前的如果小,永远不可能被2询问到,所以存了也没用(这一点我认为楼下解释地很清楚),不然入栈,栈顶+1
操作1(集装箱出库操作,相当于出栈),直接栈顶-1
操作2(集装箱询问操作,由于此时的栈顶是最大值,可以直接输出)
这不就做完了吗?
至于代码,这次我就不贴了,楼下有代码,如果你看不懂,就多看几遍,应该能懂
PS:希望题解审核能过,这是我第一次发没有代码的题解,自认为可以理解我的解释