首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >栈-946.验证栈序列-力扣(LeetCode)

栈-946.验证栈序列-力扣(LeetCode)

作者头像
白天的黑夜
发布2025-10-22 17:29:03
发布2025-10-22 17:29:03
2300
代码可运行
举报
运行总次数:0
代码可运行

一、题目解析

1、判断push和pop的序列是否符合poped

2、poped的长度和pushed相同

3、pushed中没有重复元素

二、算法原理

相信大多数读者在学习栈这个数据结构时,肯定接触过类似的题目:判断下面序列能通过push和pop得到?而今天这道题就是把我们平时做题时在纸上或者在大脑中推演的过程用代码实现,并判断

解法:栈模拟

这里不一定要用栈来实现,这里可以用vector来实现一个简单的栈,通过vector的back()达到栈的top()的效果

想了解更多相关知识,可以自行访问查询

链接:cplusplus.com - The C++ Resources Network

模拟过程:
1、在入栈后,先判断入栈的元素是否等于poped中的元素(通过维护一个下标索引来遍历poped)
2、如果相等,则执行出栈操作,加加poped的下标索引。但我们出栈操作可能是需要重复的,所以这里是一个循环
3、如果不相等,则继续入栈
4、如果符合栈序列,则栈内元素为空,反之不为空,所以我们将栈的元素是否为空作为返回结果,记得取反哦(取反是用vector模拟栈需要取反,如果直接使用栈empty()无需取反)

vector模拟取反是因为,返回的是size(),如果为空,则size=0,0为false,非0为true,所以需要取反;empty()如果为空,则返回true,反之为false

三、代码示例

代码语言:javascript
代码运行次数:0
运行
复制
class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped)
    {
        vector<int> num;
        int  i = 0, j = 0;
        for (int i = 0; i < pushed.size(); i++)
        {
            num.push_back(pushed[i]);//模拟入栈
            if (num.back() == popped[j])
            {
                while (num.size() && num.back() == popped[j])//模拟连续出栈
                {
                    num.pop_back();
                    j++;
                }
            }
        }
        return !num.size();//如果符合,则栈为空,数量为0,否则栈不为空
    }
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目解析
    • 1、判断push和pop的序列是否符合poped
    • 2、poped的长度和pushed相同
    • 3、pushed中没有重复元素
  • 二、算法原理
    • 解法:栈模拟
      • 模拟过程:
      • 1、在入栈后,先判断入栈的元素是否等于poped中的元素(通过维护一个下标索引来遍历poped)
      • 2、如果相等,则执行出栈操作,加加poped的下标索引。但我们出栈操作可能是需要重复的,所以这里是一个循环
      • 3、如果不相等,则继续入栈
      • 4、如果符合栈序列,则栈内元素为空,反之不为空,所以我们将栈的元素是否为空作为返回结果,记得取反哦(取反是用vector模拟栈需要取反,如果直接使用栈empty()无需取反)
  • 三、代码示例
    • 看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档