棧排序。 編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構(如陣列)中。該棧支援如下操作: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。
classsortedstack
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...