用 Go 剑指 Offer 31. 栈的压入、弹出序列 (辅助栈)

这篇具有很好参考价值的文章主要介绍了用 Go 剑指 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 的排列。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。文章来源地址https://www.toymoban.com/news/detail-413204.html

点击查看代码
func validateStackSequences(pushed []int, popped []int) bool {
    stack :=[]int{}
    i := 0

    for _, x := range(pushed) {
        stack = append(stack, x)

        for len(stack) > 0 && stack[len(stack)-1] == popped[i]{
            stack = stack[:len(stack)-1]
            i++
        }
    }

    return len(stack) == 0
}

到了这里,关于用 Go 剑指 Offer 31. 栈的压入、弹出序列 (辅助栈)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode——栈的压入、弹出序列

    这里我用下面的例子子来讲解一下 模拟栈的实现 。 例子1:pushed = [1,2,3,4,5] popped = [4,5,3,2,1] 思路:第一步:我们先创建一个栈,然后将pushed的数据压进去 第二步:判断! 当压入栈的数据和popped第一个数据一样的时候,我们就出数据。ps:这时可以用一个posi来记录要比较的数

    2024年02月10日
    浏览(24)
  • 剑指 Offer 44.!! 数字序列中某一位的数字

    参考资料 剑指 Offer 44. 数字序列中某一位的数字 中等 351 相关企业 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。 请写一个函数,求任意第n位对应的数字。 示例 1: 输入:n = 3 输出:

    2024年02月15日
    浏览(29)
  • 剑指offer33.二叉搜索树的后序遍历序列

     我一开始的想法是:后序遍历是左右根,那么第一个数小于第二个数,第二个数大于第三个数,然后从第三个数开始又循环,显然错了,因为我这种是理想情况,是一个满二叉树。正确的解法是: 后序遍历是[[左子树],[右子树],[根节点]],左子树中的所有值都小于根节点,

    2024年02月16日
    浏览(29)
  • 用 Go 剑指 Offer 12. 矩阵中的路径

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使

    2023年04月10日
    浏览(28)
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列(java解题)

    目录 1. 题目 2. 解题思路 3. 数据类型功能函数总结 4. java代码 5. 踩坑小记 递归调用,显示 StackOverflowError 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二

    2023年04月22日
    浏览(30)
  • 用 Go 剑指 Offer 12. 矩阵中的路径 (DFS + 回溯)

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使

    2023年04月10日
    浏览(28)
  • C#Queue<T>队列出现弹出元素被最后一次压入得元素覆盖的问题

    问题代码: 问题背景: 1.一个线程A不间断向Queue压入元素,压入元素后,会启动多线程进行元素弹出,执行相关耗时动作。 2.启动另外一个线程B连续向Queue压入元素。 问题现象: 线程B连续压入的元素,弹出的元素值均为最后一次压入的元素值。 问题原因: 网上查找问题原

    2024年02月11日
    浏览(22)
  • 力扣 [344、541、剑指offer 05.、151、剑指offer58-ll]

    双指针:自己的 双指针,左指针指向开头,右指针指向末尾。 交换两个左右指针。 左右指针向中间移动。 时间复杂度:O(n); 空间复杂度:O(1); 实现代码: 分类讨论:自己的 分类讨论: 如果剩余字符少于k个,则将剩余字符全部反转。 如果剩余字符大于或等于k个,则反

    2024年02月15日
    浏览(29)
  • 剑指offer-3-10

    1.用set 2.用一个数组代替哈希表 1.从右上角查找 2.查找的范围是从左下角到目前节点的小矩形,注意边界问题 针对于\\\" “.equals(c1)判定失败的问题: System.out.println(” “.equals(” “)); //true System.out.println(” \\\".equals(’ \\\')); //false 因为c1是字符,所以不行。 replace和replaceAll是JAVA中常

    2024年02月14日
    浏览(16)
  • 【剑指offer】替换空格

    👑专栏内容:力扣刷题 ⛪个人主页:子夜的星的主页 💕座右铭:前路未远,步履不停 剑指offer:替换空格 请实现一个函数,将一个字符串s中的每个空格替换成“%20”。 例如,当字符串为We Are Happy则经过替换之后的字符串为We%20Are%20Happy。 数据范围: 0 ≤ l e n ( s ) ≤ 1000

    2024年01月17日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包