劍指offer第20題 包含min函式的棧

2021-10-13 22:38:54 字數 1052 閱讀 3651

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

示例:minstack minstack = new minstack();

minstack.push(-2);

minstack.push(0);

minstack.push(-3);

minstack.min(); --> 返回 -3.

minstack.pop();

minstack.top(); --> 返回 0.

minstack.min(); --> 返回 -2.

各函式的呼叫總次數不超過 20000 次

思路:

我們新建兩個棧,棧1存原資料,棧2存最小值。每次當我們插入資料的時候,棧1直接插入元素,棧2的時候,我們只需要比較一下棧2的棧頭,如果當前元素比棧頭小,那麼我們就將這個元素插入到棧2,如果大於,那麼我們就將棧2的棧頭再插入一遍棧2即可。

劍指offer 面試20題

面試20題 題目 表示數值的字串 題 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。解題思路一 利用python中的float強轉,如果可以...

劍指offer 第15 16題

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 classsolution defnumberof1 self,n write code here count 0 ifn 0 n n 0xffffffff whilen count 1 n n 1 n re...

劍指Offer 第1題

問題 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。暴力法 分析 直接遍歷一遍陣列,即可判斷目標target是否存在。複雜度分析 時間複雜度 o n 2 因...