面試題 棧排序

2021-10-22 10:32:54 字數 972 閱讀 8139

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