(十四)劍指offer之棧的壓入彈出序列及包含min函式的棧
1、題目描述:
定義棧的資料結構,請在該型別中實現一個能夠得到棧最小元素的min函式。
class Solution {
public:
void push(int value) {
s_data.push(value);
if(s_min_data.size()==0 || value < s_min_data.top())
s_min_data.push(value);
else
s_min_data.push(s_min_data.top());
}
void pop() {
if(s_data.size() > 0 && s_min_data.size() > 0){
s_data.pop();
s_min_data.pop();
}
}
int top() {
return s_data.top();
}
int min() {
return s_min_data.top();
}
private:
stack<int> s_data;
stack<int> s_min_data;
};
2、題目描述:
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。
例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。
(注意:這兩個序列的長度是相等的)
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
bool Ispossible = false;
if(!pushV.empty() && !popV.empty()){
stack<int> s_data;
auto pushNext = pushV.begin();
auto popNext = popV.begin();
while(popNext != popV.end()){
while(s_data.empty() || s_data.top() != *popNext){
if(pushNext == pushV.end()) break;
s_data.push(*pushNext);
pushNext++;
}
if(s_data.top() != *popNext) break;
s_data.pop();
popNext++;
}
if(s_data.empty() && popNext == popV.end())
Ispossible = true;
}
return Ispossible;
}
};
如有建議或其他問題,可隨時給我們留言。或者到以下連結:
Star/Fork/Push 您的程式碼,開源倉庫需要您的貢獻。
請檢視Coding 題目網址和收藏Accepted程式碼倉庫,進行coding!!!
相關文章
- 劍指offer——包含min函式的棧函式
- 【劍指offer】包含min函式的棧函式
- 【劍指offer】13.包含min函式的棧函式
- 包含min函式的棧(劍指offer)---C語言函式C語言
- 力扣 - 劍指 Offer 30. 包含min函式的棧力扣函式
- 包含min函式的棧函式
- 設計包含min函式的棧函式
- JZ-020-包含 min 函式的棧函式
- 《劍指 Offer》棧實現佇列佇列
- [每日一題] 第二十七題:包含min函式的棧每日一題函式
- 劍指offer之順序列印陣列陣列
- 【劍指offer】兩個棧實現一個佇列佇列
- 【劍指offer】兩個佇列實現一個棧佇列
- 【演算法】設計包含 min函式的棧,時間複雜度都是 O(1)演算法函式時間複雜度
- 劍指offer | 09. 用兩個棧實現佇列佇列
- 劍指offer-用兩個棧實現佇列-php佇列PHP
- 在實驗中觀察指標——C++ 函式引數的壓棧順序指標C++函式
- arm64 架構之入棧/出棧操作架構
- 順序棧————遍歷、出棧、入棧
- 函式呼叫棧函式
- 【劍指offer】字串的排列字串
- 函式呼叫棧的問題函式
- 劍指Offer系列之「表示數值的字串」字串
- 劍指Offer--面試題1:賦值運算子函式面試題賦值函式
- leetcode155. 最小棧 1441. 用棧操作構建陣列 劍指 Offer 09. 用兩個棧實現佇列LeetCode陣列佇列
- 《劍指offer》:[62]序列化二叉樹二叉樹
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串的組合字串
- 劍指offer—58.翻轉單詞順序列—分析及程式碼(Java)Java
- 資料結構(筆試題-棧(入棧出棧)資料結構筆試
- 劍指offer(java實現)第5題“用兩個棧實現佇列”-牛客網Java佇列
- 劍指 Offer 38. 字串的排列字串
- 劍指Offer 表示數值的字串字串
- 【劍指offer】樹的子結構
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- 【Analytic】分析函式之MIN函式函式
- 函式呼叫暫存器及棧幀結構函式
- 劍指offer——正規表示式匹配C++C++