定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 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 因...