-
题目链接 https://leetcode-cn.com/problems/validate-stack-sequences/submissions/
-
题目描述
- 给定
pushed
和popped
两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回true
;否则,返回false
。 -
示例 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 之前弹出。
- 给定
-
解题思路
创建一个栈来模拟pushed,popped的操作。根据pushed的顺序入栈,按照popped的顺序出栈。这里需要一个变量来作为popped的索引,以便知道下一个要出栈的元素是什么。 -
代码
- python
class Solution: def validateStackSequences(self, pushed, popped): s = [] j = 0 for i in pushed: s.append(i) while s and s[-1] == popped[j]: j += 1 s.pop() return j == len(pushed)
- c++
class Solution { public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int> s; int j = 0; for (int x: pushed){ s.push(x); while (not s.empty() and s.top() == popped[j]){ j++; s.pop(); } } return j == pushed.size(); } };
- python
leetcode 946. 验证栈序列
猜你喜欢
转载自blog.csdn.net/qq_38043440/article/details/88613520
今日推荐
周排行