代码随想录算法训练营第十一天|20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

一、20. 有效的括号

题目链接:

LeetCode 20. 有效的括号

学习前:

思路:

  • 当前元素为左括号,直接入栈

  • 当前元素为右括号,若找到对应的左括号匹配,则循环继续;反之返回false

  • 若栈为空,返回true;反之false

时间复杂度:O(n)

空间复杂度:O(n)

学习后:

采用入栈右括号,降低复杂度。即当遇到左括号,入栈对应的右括号;遇到右括号,与栈顶元素直接进行比较

二、1047. 删除字符串中的所有相邻重复项

题目链接:

LeetCode 1047. 删除字符串中的所有相邻重复项

学习前:

思路:

用一个栈存放删除后的字符串,接着出栈并翻转

时间复杂度:O(n)

空间复杂度:O(n)

学习后:

还可以采取快慢指针和字符串直接作为栈的思路

三、150. 逆波兰表达式求值

题目链接:

LeetCode 150. 逆波兰表达式求值

学习前:

思路:

用栈存储表达式,当遇到数值时入栈,当遇到运算符时弹出两个数进行运算后入栈

时间复杂度:O(n)

空间复杂度:O(n)

学习后:

最后栈内只剩一个元素,最好将这个元素出栈,便于进行内存回收

四、学习总结

  1. 时间:2h
  2. 对栈这种数据结构的应用,注意内存问题
  3. 比较String对象的值是否相等时,不能直接用==,应当用equals
posted @   amulet  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示