📜  反转队列的前 K 个元素(1)

📅  最后修改于: 2023-12-03 14:50:36.151000             🧑  作者: Mango

题目描述

给定一个整数数组和一个正整数 K,反转队列中前 K 个元素。

示例:

输入: 队列为 [1,2,3,4,5],K = 2 输出: [2,1,3,4,5] 解释: 反转前两个元素后,队列变为 [2,1,3,4,5]。

思路

使用队列的先进先出特性,可以将队列中的元素反转。具体步骤如下:

  1. 将前K个元素入队
  2. 将队列前K个元素取出来,放到栈中
  3. 将栈中的元素依次出栈,入队列
  4. 将队列中的剩下元素入队到队列末尾

代码实现

def reverse_queue(queue, k):
    stack = []
    for i in range(k):
        stack.append(queue.pop(0))
    while len(stack) > 0:
        queue.append(stack.pop())
    for i in range(len(queue) - k):
        queue.append(queue.pop(0))
    return queue

复杂度分析

  • 时间复杂度:O(n),需要遍历一遍队列
  • 空间复杂度:O(k),需要用到一个栈来存储前k个元素