【问题标题】:How would i sort a queue using only one additional queue我将如何仅使用一个附加队列对队列进行排序
【发布时间】:2015-03-03 02:13:27
【问题描述】:

所以基本上,我要求对队列进行排序,我只能使用一个辅助队列,并且只允许固定数量的额外内存。

如何仅使用一个附加队列对队列进行排序?

【问题讨论】:

  • 您尝试过什么了吗?如果有,请发帖
  • 我还没有,不确定如何开始...... ??
  • 您使用什么语言?这是作业吗?
  • 不,这是求职面试,我没听懂,只是想知道正确答案是什么。
  • 您将需要遵循递归方法。看看这个:gist.github.com/abhishekcghosh/049b50b22e92fefc5124

标签: algorithm queue constants analysis


【解决方案1】:

就我个人而言,我不喜欢这样随意限制的面试问题,除非它实际上反映了你在公司工作时必须面对的条件。我认为它实际上并没有找到合格的候选人,或者更确切地说,我不认为它准确地消除了不合格的候选人。 当我为我的公司进行技术面试时,所有的问题都是现实的和相关的。把它放在一边。

虽然肯定有几种方法可以解决这个问题,并且使用递归肯定是其中之一,但我希望如果您尝试使用递归来解决它,他们会要求您在不使用递归的情况下重新处理,因为他们对您可以使用的内存和数据结构。否则,他们还不如给你两个队列、一个堆栈和你想要的内存。

这是解决问题的一种方法的示例。最后,应该对 queueB 进行排序。它只使用一个额外的局部变量。这是在 C# 中完成的。

        queueB.Enqueue(queueA.Dequeue());
        while (queueA.Count > 0)
        {
            int next = queueA.Dequeue();
            for (int i = 0; i < queueB.Count; ++i)
            {
                if (queueB.Peek() < next)
                {
                    queueB.Enqueue(queueB.Dequeue());
                }
                else
                {
                    queueB.Enqueue(next);
                    next = queueB.Dequeue();
                }
            }
            queueB.Enqueue(next);
        }

【讨论】:

  • 是的,这就是我要找的……感谢您的澄清……是的,面试真的很奇怪。不要以为我得到了这份工作哈哈。但现在我知道这一点以供将来参考:)
猜你喜欢
  • 2012-05-20
  • 2011-07-05
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多