Momenta筆試題 最小棧

2021-09-27 08:51:24 字數 1095 閱讀 5148

實現乙個最小棧,有三種操作,

min:得到棧中的最小值

push:在棧頂插入乙個元素

pop:彈出棧頂元素,

使這三種操作的時間複雜度都是o(1)

要求:語言不限

輸入描述:

第一行是乙個數q,接下來q行每行表示乙個操作,每行首先是操作op

若op==0,則輸出當前棧中的最小值;

若op==1,表示push,接著正整數x,把在x放進棧頂;

若op==2,表示pop,彈出棧頂元素

保證q<=500000,保證op==0或2時(即min操作和pop操作時)棧不為空。

你可以假設一開始棧的空的。

輸出描述:

對應每個op== 0或2 ,

如果是op == 0輸出當前棧中的最小值,

如果是op==2輸出彈出的元素。

示例1

輸入

7

1 31 4

01 202

0

輸出

322

3

說明

第乙個操作為push 3,此時棧元素為3

第二個操作為push 4,此時棧元素為3,4

第三個操作為min,此時棧元素為3,4,輸出最小值3

第四個操作為push 2,此時棧元素為3,4,2

第五個操作為min,此時棧元素為3,4,2,輸出最小值2

第六個操作為pop,彈出元素2,此時棧元素為3,4,輸出彈出的元素2

第七個操作為min,此時棧元素為3,4,輸出最小值3

重要的是理解!!!

#include#includeusing namespace std;

int main()

else if (op == 1)

}else if (op == 2)

s1.pop();

} }return 0;

}

最小棧 Momenta2019秋招技術崗筆試題

實現乙個最小棧,有三種操作,min 得到棧中的最小值,push 在棧頂插入乙個元素,pop 彈出棧頂元素,使這三種操作的時間複雜度都是o 1 要求 語言不限 第一行是乙個數q,接下來q行每行表示乙個操作,每行首先是操作op 若op 0,則輸出當前棧中的最小值 若op 1,表示push,接著正整數x,...

棧相關筆試題

解題 如下 function smartrepeat templatestr elseif w test rest else if rest 0 console.log index,stack1,stack2 while 結束之後,stack1 和 stack2 中肯定還剩餘 1 項。返回棧2中剩下...

筆試題 最小的K個數

題目 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,思考,採用最簡單的選擇排序的方法,逐步求出第 i 小的值 0 i k 也不要忘了對一些特殊情況的判斷。class solution for int i 0 i k i int...