(十四)劍指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】13.包含min函式的棧函式
- 包含min函式的棧(劍指offer)---C語言函式C語言
- 力扣 - 劍指 Offer 30. 包含min函式的棧力扣函式
- 設計包含min函式的棧函式
- JZ-020-包含 min 函式的棧函式
- JZ-021-棧的壓入、彈出序列
- [每日一題] 第二十七題:包含min函式的棧每日一題函式
- 《劍指 Offer》棧實現佇列佇列
- 劍指offer之順序列印陣列陣列
- 劍指offer-用兩個棧實現佇列-php佇列PHP
- 劍指offer | 09. 用兩個棧實現佇列佇列
- 在實驗中觀察指標——C++ 函式引數的壓棧順序指標C++函式
- arm64 架構之入棧/出棧操作架構
- 順序棧————遍歷、出棧、入棧
- leetcode155. 最小棧 1441. 用棧操作構建陣列 劍指 Offer 09. 用兩個棧實現佇列LeetCode陣列佇列
- 函式呼叫棧函式
- 函式呼叫棧的問題函式
- 劍指Offer系列之「表示數值的字串」字串
- 資料結構(筆試題-棧(入棧出棧)資料結構筆試
- 劍指OFFER
- dotnet C# 結構體出方法彈棧之後的行為C#結構體
- 函式呼叫暫存器及棧幀結構函式
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- 深入淺出CPU眼中的函式呼叫&棧溢位攻擊函式
- 劍指offer—58.翻轉單詞順序列—分析及程式碼(Java)Java
- 劍指Offer--面試題1:賦值運算子函式面試題賦值函式
- 【劍指offer】【2】字串的空格字串
- [劍指offer] 二叉搜尋樹的後序遍歷序列
- 劍指 Offer 57 - II. 和為s的連續正數序列
- 函式棧幀(呼叫過程)函式
- C語言函式呼叫棧C語言函式
- 劍指offer(java實現)第5題“用兩個棧實現佇列”-牛客網Java佇列
- 劍指 Offer 38. 字串的排列字串
- 劍指Offer 表示數值的字串字串
- 劍指 Offer 44. 數字序列中某一位的數字
- 劍指offer導航
- Leetcode劍指offer(八)LeetCode
- 劍指 offer21