扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
author-avatar

GOLANG ROADMAP


首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
  • 面试宝典系列

    • 剑指 Offer 题解
  • 数组与矩阵

  • 栈队列堆

    • 9. 用两个栈实现队列
    • 30. 包含 min 函数的栈
    • 31. 栈的压入、弹出序列
    • 40. 最小的 K 个数
    • 41.1 数据流中的中位数
    • 59. 滑动窗口的最大值
  • 双指针

  • 链表

  • 树

  • 贪心思想

  • 二分查找

  • 分治

  • 搜索

  • 排序

  • 动态规划

  • 数学

  • 位运算

  • 其他

扫码订阅《 》或入驻星球,即可阅读文章!

31. 栈的压入、弹出序列


GOLANG ROADMAP

# 题目链接

牛客网 (opens new window)

力扣 (opens new window)

# 题目描述

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。

例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。

# 解题思路

1,用go语言slice建一个辅助栈,来顺序添加压入序列

2,每次添加一个元素,去跟弹出序列比较,若不同,继续添加。若相同,则弹出,继续拿新建栈的栈顶元素去跟弹出序列去比较,循环即可。

3,最后,若辅助栈中没有元素,则返回真,反之。

func validateStackSequences(pushed []int, popped []int) bool {
     //建一个辅助栈
     stack := make([]int,0)
     //将push顺序压入辅助栈中,如果栈顶元素==pop序列中下一个出现的值,则弹出
     i := 0 
     for _,value := range pushed{
         stack = append(stack,value)
         for len(stack) != 0 && stack[len(stack)-1] == popped[i]{
             stack = stack[:len(stack)-1]
             i++
         }
     }
     //总结判断
     if len(stack) == 0{
         return true
     }else{
         return false
     }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  • 题目链接
  • 题目描述
  • 解题思路