【问题标题】:Algorithm for reversing two adjacent entries in a queue反转队列中两个相邻条目的算法
【发布时间】:2022-01-25 15:37:43
【问题描述】:

假设您有两个队列,并且一次只能将一个条目从队列的头部移动到任一队列的尾部。设计一种算法,用于反转其中一个队列中的两个相邻条目。

【问题讨论】:

  • 到目前为止你尝试了什么?出了什么问题?
  • 这类似于分流问题。
  • 你知道这两个队列的大小吗?

标签: algorithm queue reverse


【解决方案1】:
q1 = [1,2,3,4,5]
q2 = []

reverse 3,4

q1 = [2,3,4,5,1]
q2 = []

q1 = [3,4,5,1,2]
q2 = []

q1 = [4,5,1,2]
q2 = [3]

q1 = [5,1,2,4]
q2 = [3]

q1 = [5,1,2,4,3]
q2 = []

q1 = [1,2,4,3,5]
q2 = []

这基本上就是算法。旋转要反转元素的队列。当两者中的第一个元素可以出队时,将其取出并将其入队到另一个队列中。入队和出队下一个元素并放回第一个元素。如果填充了q2,则需要将其旋转一次,直到可以将元素从q1 中取出。这不会改变q2 的状态。

时间复杂度:O(n + m) 其中nmq1q2 中元素的数量。

空间复杂度:O(1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多