232.用栈实现队列
文档讲解:代码随想录
- 知道要用两个栈实现,具体咋做忘了。
- 队列的特性是先进先出,栈是先进后出,入队操作直接入栈就行,实现出队操作,入栈的第一个元素在栈最下面出来需要借助另一个栈b,先将所有元素入栈b,这样出栈的时候就是入队的第一个元素了,javascript中的栈竟然是直接用数组代替的,直接就可以进行pop操作和push操作。实现了pop函数在实现peek操作的时候可以直接调用pop来简化代码这个编程习惯真好。
- 不知道栈如何实现。
- 用了一个小时左右。
225. 用队列实现栈
文档讲解:代码随想录
- 模模糊糊知道要用两个队列来实现,具体咋做忘了。
- 用一个队列也可以实现栈,比如栈是先进后出,在一个队列里这个元素要出来必须等前面的元素出来才可以,可以让这个元素之前的元素出队再入队,这样就可以达到出栈元素的目的。
- javascript中队列竟然也是用数组实现的,出队元素是通过执行数组的shift方法达到获取移除第一个元素的作用。
- 用了一个小时左右。
20. 有效的括号
文档讲解:代码随想录
- 有栈的代码了这个题感觉ok。
- /
- 需要建立左符号和右符号的关系,遇到右符号不是比较出栈元素和这个元素是否相等,而是判断这两个符号是否配对;遍历完字符串后,栈是否为空都有返回值。
- 用了半个小时左右。
1047. 删除字符串中的所有相邻重复项
文档讲解:代码随想录
- 先想到用双指针,没做出来。
- 原来用栈这么简单,结果就藏在栈里面的内容中,遍历一个新元素就检查栈顶是否和这个新元素相同,相同就出栈,不相同就入栈,将栈中的结果反转一下就是满足题意的结果。
- 这个题用之前写过的类定义的栈会超时间,感觉可能和最后反转拼接操作有关,不知道具体啥原因,最后用了一个数组来实现存放元素,移除元素的逻辑,最后时间复杂度降低了。
- 用了一个小时左右。