java 中得队列是利用LinkedList来实现得,LinkedList是一种链表结构,方便插入和删除,不方便查询。java中的栈有直接的类是stack,这个我在之前很少用到。
看到很多人都在说java中 stack是继承的vector的,效率和性能都不高,因此使用的是Deque(double-ended queue)就是两端都可以进出。如果要作为栈的花只让调用offerFirst和pollFirst即可
创建方法如下:
Deque d= new ArrayDeque();
判断是否为空的方法是:d.isEmpty();
获取顶部元素的方法是:d.getFirst();
在刷栈的leecode题目时,目前遇到的点有三个:
1.是辅助栈的方法(利用空间换时间)
这个是在最小栈的题目中看到的。当时想的有点复杂。结果他直接使用了两个栈来做,也就是辅助栈
2.一个变量+计算差值的方式来存储
这个方式是其他网友在最小栈下评论的,通过一个变量和每次入栈时计算差值的方式,来减小了空间消耗,出栈时也需要通过差值,计算出之前的值
3.单调栈
这个在柱状图最大矩形和下一个更大元素的题里遇到了。基本上都需要其他数据结构,数组或者map之类的来存储在出栈时,需要保存的信息