我读出了问题破解编码访谈,作者描述了解决方案,在标题中描述的问题如下:归并堆栈(仅使用额外的堆栈,但许多需要)
通过合并排序解决方案,我们将创建两个额外的堆栈并将堆栈分成两个堆栈。 >零件。我们将递归地对每个堆栈进行排序,然后按排序顺序将它们合并回原始堆栈。请注意,这需要为每个递归级别创建两个附加堆栈。
我想了解时间复杂性。我假设(尽管可能是完全错误的),需要两个额外的堆栈,因为当从上到下将两个堆栈以自下而上的顺序合并时,我们必须反复从两个堆栈中最小的元素弹出到堆栈2中,然后弹出堆栈2中的所有堆栈进入堆栈1以获得所有元素的升序。这个过程对于每一个递归级别都是O(N),并且由于我们递归地操作了一半,它会是O(logN)级别......正确吗?那么这是一个O(NlogN)时间算法吗?而O(N)空间复杂?