面試題30 包含min函式的棧

2021-08-21 01:14:28 字數 724 閱讀 5315

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min、push及pop的時間複雜度都是o(1)。

思路:利用乙個輔助棧來存放最小值

棧  3,4,2,1

輔助棧 3,3,2,1

每入棧一次,就與輔助棧頂比較大小,如果小就入棧,如果大就入棧當前的輔助棧頂;當出棧時,輔助棧也要出棧

這種做法可以保證輔助棧頂一定都當前棧的最小值

表:棧內壓入3,4,2,1之後兩次彈出棧頂數字再壓入0時,資料棧、輔助棧和最小值的狀態 步驟

運算元據棧

輔助棧最小值

1壓入333

32壓入43,4

3,33

3壓入2

3,4,2

3,3,224

壓入13,4,2,1

3,3,2,115

彈出3,4,2

3,3,226

彈出3,4

3,33

7壓入0

3,4,0

3,3,0

0class solution {

public:

stackstack1, stack2;

void push(int value) {

stack1.push(value);

if (stack2.empty())

stack2.push(value);

else

{if (value

面試題30 包含min函式的棧

一 題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 二 關鍵 1.新增輔助棧,每次新增乙個元素,就往輔助棧中新增當前最小的那個元素。三 解釋 四 pragma once include include tem...

面試題30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 minstack.pu...

面試題30 包含min函式的棧

思路 使用輔助棧。棧a實現正常的push,pop,top函式。棧b在每次棧apush的時候判斷,棧頂元素是否 要push進棧a的元素。注意的點 1.if b.empty b.peek x 此處必須要 因為在 情況下,push 0 push 0 pop 棧b就沒有元素了。2.pop 函式中,a.pop...