当前位置: 首页 > news >正文

LeetCode刷题---栈---946

验证栈序列

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

题目

给定 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 之前弹出。

提示:

  • 1 <= pushed.length <= 1000
  • 0 <= pushed[i] <= 1000
  • pushed 的所有元素 互不相同
  • popped.length == pushed.length
  • popped 是 pushed 的一个排列

自己的思路和代码

思路

        就是把pushed按照popped的方式进行入栈,如果popped的元素不在栈中,那么就将pushed所找元素之前的全部压入栈中,如果在栈中,那就观察栈顶元素是不是所找的元素,如果不是就返回false。

代码
class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        stack<int> st;
        multiset<int> table;
        int i = 0;

        for(auto it : popped) {
            if(table.count(it)) {
                if(st.top() != it) {
                    return false;
                } else {
                    st.pop();
                    table.erase(it);
                }
            } else {
                for(i; i<pushed.size(); i++) {
                    if(pushed[i] != it) {
                        st.push(pushed[i]);
                        table.insert(pushed[i]);
                    } else {
                        ++i;
                        break;
                    }
                }
            }
        }
        return true;
    }
};

http://www.dtcms.com/a/38844.html

相关文章:

  • XXE漏洞:原理、危害与修复方法详解
  • AIP-153 导入和导出
  • Linux C++项目推荐:文件服务器+如何快速上手C++大项目
  • element组件教学,基础
  • Vue2+Element实现Excel文件上传下载预览
  • RAG(检索增强生成)原理、实现与评测方法探讨
  • 流匹配(Flow Matching)教程
  • 基于Spring Boot的供应商管理系统设计与实现(LW+源码+讲解)
  • AI杂谈(二)
  • 通过Sidecar模式实现服务注册、服务发现和负载均衡的分布式系统架构
  • 二分查找(数值范围)--- koko吃香蕉
  • 【转:由Salesforce的元数据驱动引发的联想】
  • X64 TF位和Single-step单步调试的研究
  • 渗透第二次作业
  • spring结合mybatis多租户实现单库分表
  • 洛谷-新二叉树python
  • Flink SQL怎么用?
  • 深度学习模型可视化:通俗易懂的全面解读
  • 基础算法整理
  • C++20 三路比较运算符 `<=>` 与 `operator==() = default` 的深度剖析及实际应用
  • VUE向外暴露文件,并通过本地接口调用获取,前端自己生成接口获取public目录里面的文件
  • Linux进程控制
  • leetcode 73. 矩阵置零
  • 鸿蒙新版开发工具DevEco Studio不能新建模拟的解决方法
  • 两台互通的服务器使用Docker部署一主两从MySQL8.0.35
  • 【Qt】为程序增加闪退crash报告日志
  • Nginx面试宝典【刷题系列】
  • 广州无人机考试培训收费标准(附报名流程)
  • 【开源免费】基于SpringBoot+Vue.JS美食烹饪互动平台(JAVA毕业设计)
  • python 剪切音频