實現乙個最小棧,有三種操作,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輸出彈出的元素。輸入7
1 31 4
01 202
0輸出32
23說明第乙個操作為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
這個題目的解題思路比較的清晰,需要明確的是要用到兩個棧,stack1用來進行正常的壓入彈出操作,stack2用來進行最小值的彈出。但是需要注意的是以下要點:
1.stack2中的元素,stack1中都有,因此如果要輸出最小值,要在stack1和stack2中分別進行彈出棧的操作。
2.在最小值元素進行更新的時候要注意,最小值始終要保持為stack2的棧頂元素。
c++**如下:
#include
using
namespace std;
intmain()
else
if(op==1)
else
if(op==2)
}return0;
}
2023年秋招 京東測試開發崗
1.下列程式的執行後的結果為 include using namespace std int foo int n int main 3.原二叉樹先序遍歷為 30,24,15,27,29,46 根左右 中序遍歷為 15,24,27,29,30,46 左根右 求其轉換為平衡二叉樹後的後序遍歷結果。4.t...
面經 經驗分享 2019秋招演算法崗覆盤
輸出 存在這個數,則輸出這個數。不存在這個數,則輸出false。輸出 輸出一行,輸出前k大的數,每個數字用逗號隔開。簡歷的重要性在找工作中不言而喻,乙份好的簡歷能讓面試官迅速對你產生好感,也為接下來的面試提供方便,所以一定要認真寫好自己的簡歷,每次面試時不管公司那邊有沒有通知帶簡歷,都一定要帶上自己...
C C 秋 春招技術崗面試基礎 深淺拷貝
c 的拷貝方式 介紹了深淺拷貝的區別 先看一下下面的 c vc6.0 乙個person類,乙個建構函式 乙個析構函式 乙個char 成員變數,乙個 int成員變數。建構函式 len是字串的長度,然後為指標p分配記憶體空間,長度為len 1,1是為了字串末尾的 0,然後strcpy進行字串拷貝 析構函...