栈的应用

🥉03.02. 栈的最小值

🥉844. 比较含退格的字符串@

用栈来保存不重复的字符,用栈顶元素和新元素作对比判断是否重复。有点类似于祖玛游戏中,如果消除一大串相同颜色的珠子后,珠子左右如果颜色相同再消失,不相同就连在一起的场景。
image.png
🥉 1047. 删除字符串中的所有相邻重复项
相比于上面的题目,考虑的就多一点,但理解了并不难:

  • 没遇到左括号之前,就根据加减号计算好了
  • 遇到左括号的时候,把左括号之前的总和、左括号前面的符号存到栈里面。把res(存总和变量)和sign(符号标记)分别变成0、1(初始值)
  • 没遇到右括号时,继续按照加减号计算
  • 遇到右括号的时候,说明括号里面的计算完了。式子的综合应该等于括号前的和+/-括号里面的和。因为栈顶为括号的符号,所以res=res*stack.pop(),给括号里面的结果确定正负,然后再加上括号前的值res+=stack.pop()

🥇 224. 基本计算器
相比于上面的计算器,这道题就容易很多了,根本不需要考虑很多!
🥈 150. 逆波兰表达式求值

栈与队列的相互转换

🥉225. 用队列实现栈
🥉232. 用栈实现队列