让我们按顺序包含元素1,2,3,4的第一个Queue,以便第一个Queue成为1,2,3,4的前面是1,后面是4。我们还有一个空队列,包含零个元素。我们如何使用另一个空的队列来反转第一个队列? (我们不能使用第三个队列进行倒车)。
我尝试使用另外一个队列来反转队列,但是我的大脑中没有解决方案。
所以我希望Queue被反转,以便反转后第一个Queue元素变为4,3,2,1。
答案 0 :(得分:0)
from tqdm import tqdm
def rotate(q, k):
move(q, q, k)
def move(q1, q2, k):
for i in range(k):
q2.append(q1.pop(0))
def reverse(q1):
q2 = []
for i in range(1, len(q1)):
move(q1, q2, len(q1) - i)
rotate(q2, len(q2) - 1)
move(q2, q1, len(q2))
rotate(q1, i + 1)
return q1
if __name__ == '__main__':
for i in tqdm(range(1000)):
rq = reverse(range(i))
assert rq == range(i)[::-1]