递归与栈

栈的基础知识

  • 栈是一种 “先进后出” (FILO, First In Last Out) 的数据结构

栈的基本操作

  • LeetCode #⾯试题 03.04 化栈为队

    • 利⽤两个栈来实现,⼀个输⼊栈、⼀个输出栈。
    • 输⼊栈⽤于读⼊数据。当需要输出元素时,若输出栈为空,则将输⼊栈的所有元素
    • 推送到输出栈,然后取栈顶元素;若输出栈⾮空,则输出栈顶即可。
  • LeetCode #682 棒球⽐赛

  • LeetCode #844 ⽐较含退格的字符串

  • LeetCode #946 验证栈序列

    • 被出栈的元素只有两种可能:即将⼊栈的元素 和 当前栈顶的元素。
    • 只需要关注出栈序列,分类讨论后模拟即可。

栈结构扩展应用

  • LeetCode #20 有效的括

  • LeetCode #1021 删除最外层的括号

  • LeetCode #1249 移除⽆效的括号

  • LeetCode #145 ⼆叉树的后序遍历

  • LeetCode #331 验证⼆叉树的前序序列化

  • LeetCode #227 基本计算器 II

智⼒发散题

  • LeetCode #636 函数的独占时间

  • LeetCode #636 函数的独占时间