面試題 03 05 棧排序

2022-05-08 22:00:08 字數 2081 閱讀 9434

棧排序。 編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構(如陣列)中。該棧支援如下操作:push、pop、peek 和 isempty。當棧為空時,peek 返回 -1。

示例1:

輸入:["sortedstack", "push", "push", "peek", "pop", "peek"]

[, [1], [2], , , ]

輸出:[null,null,null,1,null,2]

示例2:

輸入:

["sortedstack", "pop", "pop", "push", "pop", "isempty"]

[, , , [1], , ]

輸出:[null,null,null,null,null,true]

說明:棧中的元素數目在[0, 5000]範圍內。

堆排序,複雜度n*logn(n次操作,pop_heap最大logn)

注:下面兩個方法**不是我寫的

每次push都直接排序,複雜度n^2(n,n-1,n-2,n-3...3,2,1這樣倒序push的情況)

等到pop再排序,即有連續的push先不排序,先在輔助棧裡攢著。如果需要pop了,把輔助棧的數字一股腦push到主棧。再pop。

class

sortedstack

void push(int

val)

while(!s1.empty()&&s1.top()//

原棧中有比val小的值

面試題 03 05 棧排序

面試題 03.05.棧排序 棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。示例1 輸入 sortedstack pu...

LeetCode面試題 03 05 棧排序

棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。class sortedstack public void push ...

面試題 棧排序

棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。輸入 sortedstack push push peek pop p...