剑指offer:面试题31. 栈的压入、弹出序列
生活随笔
收集整理的這篇文章主要介紹了
剑指offer:面试题31. 栈的压入、弹出序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:棧的壓入、彈出序列
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對應的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。
示例 1:
輸入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
輸出:true
解釋:我們可以按以下順序執行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
示例 2:
輸入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
輸出:false
解釋:1 不能在 2 之前彈出。
提示:
0 <= pushed.length == popped.length <= 1000
0 <= pushed[i], popped[i] < 1000
pushed?是?popped?的排列。
解題:
class Solution {
public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {if(pushed.size()!=0&&popped.size()==0) return false;stack<int> pushStack;int i=0,j=0;while(i<pushed.size()||!pushStack.empty()){if(!pushStack.empty()&&popped[j]==pushStack.top()){pushStack.pop();j++;}else{if(i>=pushed.size()) break;pushStack.push(pushed[i]);i++;}}return j==popped.size();}
};
?
總結
以上是生活随笔為你收集整理的剑指offer:面试题31. 栈的压入、弹出序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指offer:面试题30. 包含min
- 下一篇: C++ Stack Queue pr