车队入库嘛……2个栈 栈1姑且叫连续栈 栈2叫临时栈好了
需要记录2个值 连续栈的最大值和最小值 初始值为0
然后记录当前已处理的值 初始为0
对每一个输入值 判断是不是已处理值+1 如果是则输出 不需要过栈 然后更新已处理值
同时判断连续栈是否可以清空 即已处理值是否等于连续栈最小值+1
如果需要入中转栈 那么判断是不是可以直接入连续栈 即是否等于连续栈最小值-1 或者连续栈为空
如果不能则需要启用临时栈
临时栈的逻辑稍微麻烦一点 要借用连续栈保证临时栈里的元素是逆序的 具体伪代码略
不过反正你问的是需要几个栈……
稍微想了一下好像不需要连续栈的最大值……那个本来是用来合并连续栈的 但是反正合并的时候也要用到第二个栈