题目解析
本题可以使用双端队列dque来模拟圆桶。
假设
第一行给定放入顺序是inputs
第二行给定取出顺序是outputs
由于需要按照outputs顺序取出,因此我们定义一个index指向当前outputs要被取出的元素,
初始时index = 0
按照inputs顺序依次放入(篮球编号)到dque(圆桶)右边(addLast操作),每当放入一个后,则需要进行多次取出检查,即一次放入后,可以进行多次取出行为:
假设
圆桶左边篮球编号是left,则 left = dque.getFirst
圆桶右边篮球编号是right,则 right = dque.getLast
当前要取出的篮球编号是outputs[index]
- 优先检查 outputs[index] 编号的篮球是不是left,若是,则取出左边,然后index++,继续循环判断下一个要取出的篮球
- 否则继续检查 outputs[index] 编号的篮球是不是righ