一尘不染

使用两个队列实现堆栈

algorithm

类似的问题被问早前有,但这里的问题是反向的话,使用两个队列,栈。问题…

鉴于两个队列与他们的标准操作(enqueuedequeueisemptysize),实现堆栈与它的标准操作(poppushisemptysize)。

解决方案应该有 两个 版本。

  • 版本 A :推入物品时,堆叠应该高效;和
  • 版本 B :弹出项目时,堆栈应高效。

我对算法比对任何特定语言的实现都更感兴趣。但是,我欢迎使用我熟悉的语言(javac#pythonvbjavascriptphp)表示的解决方案。


阅读 210

收藏
2020-07-28

共1个答案

一尘不染

版本A(有效推送):

  • 推:
    • 排队1
  • 流行:
    • 当queue1的大小大于1时,将已排队的项目从queue1传递到queue2
    • 出队并返回queue1的最后一项,然后切换queue1和queue2的名称

版本B(有效弹出):

  • 推:
    • 排队入队
    • 将queue1的所有项目放入queue2,然后切换queue1和queue2的名称
  • 流行:
    • 从queue1出发
2020-07-28