劍指offer
兩道關於 資料結構——棧 的題目
1. 包含min函式的棧
簡要分析一下這道題,這道題做了3遍才過,踩了一些小坑
看看示例:
得到了規律,那麼關鍵部分的**實現,就在於 兩個棧(rawstack 和 minstack) 和 push() 方法
stackrawstack = new stack<>();其他部分就比較簡單stack
minstack = new stack<>();
public
void push1(int
node)
}minstack.push(min);
}
public2. 棧的壓入、彈出序列void
pop()
public
inttop()
public
intmin()
同樣,事先分析題目
如上分析:
感覺這題還是在於 抽象思維 轉化為 **,還有注意特殊情況,這題也是測了3遍過的,實現**比較簡單。
public兩題的具體原始碼可以在 裡的offer包中看看static
boolean ispoporder(int pusha, int
popa)
//獲取對應的下乙個元素所在下標
int index = pushseq.indexof(popseq.get(0));
popseq.remove(0);
int nextindex = pushseq.indexof(popseq.get(0));
if (math.abs(nextindex - index) == 1 || nextindex == pushseq.size() - 1)
pushseq.remove(index);
else
return
false
; }
return
true
; }
js 包含min函式的棧 包含min函式的棧
目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...
棧的壓入彈出序列
題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓棧序列,序列4,5,3,2,1是該棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。解答 可以用乙個輔助的棧來儲存入...
棧的壓入 彈出序列
輸入兩個整數序列,第乙個序列表示棧的壓入順序,判斷兩個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1 2 3 4 5是某棧的壓棧序列,序列4 5 3 2 1是該壓棧序列對應的乙個彈出序列,但4 3 5 1 2就不可能是該壓棧序列的彈出序列。bool ispoporder cons...