我讀出了問題破解編碼訪談,作者描述瞭解決方案,在標題中描述的問題如下:歸併堆棧(僅使用額外的堆棧,但許多需要)
通過合併排序解決方案,我們將創建兩個額外的堆棧並將堆棧分成兩個堆棧。 >零件。我們將遞歸地對每個堆棧進行排序,然後按排序順序將它們合併回原始堆棧。請注意,這需要爲每個遞歸級別創建兩個附加堆棧。
我想了解時間複雜性。我假設(儘管可能是完全錯誤的),需要兩個額外的堆棧,因爲當從上到下將兩個堆棧以自下而上的順序合併時,我們必須反覆從兩個堆棧中最小的元素彈出到堆棧2中,然後彈出堆棧2中的所有堆棧進入堆棧1以獲得所有元素的升序。這個過程對於每一個遞歸級別都是O(N),並且由於我們遞歸地操作了一半,它會是O(logN)級別......正確嗎?那麼這是一個O(NlogN)時間算法嗎?而O(N)空間複雜?