棧排序。 編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構(如陣列)中。該棧支援如下操作:push、pop、peek 和 isempty。當棧為空時,peek 返回 -1。
輸入:[「sortedstack」, 「push」, 「push」, 「peek」, 「pop」, 「peek」]
[, [1], [2], , , ]
輸出:[null,null,null,1,null,2]
相當於 建立有序棧,push(1),push(2),peek(),pop(),peek()
返回結果:[null,null,null,1,null,2]
題目中已經提示可以使用臨時棧來存放資料。因此建立乙個主棧stack,建立乙個輔助棧helper,輔助棧用來存放比當前新增元素小的元素。
push操作時,如果stack不為空,當前元素大於棧頂元素,將棧頂元素加入helper,依次比較stack棧頂元素和待新增的元素大小,直到新增的元素小於等於stack的棧頂元素。然後將待新增元素入棧,將helper中的元素依次彈出放入stack中。
class
sortedstack
public
void
push
(int val)
//這時stack中棧頂元素已經大於等於val,符合棧頂是最小值條件
//新增val到stack中
stack.
push
(val)
;//將小於val的輔助棧中的元素都新增到stack
while
(!helper.
isempty()
)}public
void
pop()}
public
intpeek()
public
boolean
isempty()
}
面試題 03 05 棧排序
面試題 03.05.棧排序 棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。示例1 輸入 sortedstack pu...
面試題 03 05 棧排序
棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。示例1 輸入 sortedstack push push peek p...
LeetCode面試題 03 05 棧排序
棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。class sortedstack public void push ...