LeetCode刷题(六)——栈

本周刷了leetCode中可以用栈解决的一些题目。在此之前先简单介绍下栈以及栈在java中的一些常用方法。

定义

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈是一种先进后出(FILO)的数据结构。

java中常见用法

1-->public Stack()创建一个空堆栈
2-->public boolean empty()测试堆栈是否为空;
3-->public E pop()移除堆栈顶部的对象,并作为此函数的值返回该对象。 
4-->public E push(E item)把项插入堆栈顶部
5-->public E peek()查看堆栈顶部的对象,但不从堆栈中移除它。 

刷题总结

从应用到栈的题目类型中可以看到,我们可以运用栈来解决一些特定符号或者极值的判断。比如有效的括号字符串解码这几道题目中。我们可以用栈记录信息,然后在需要的时候通过栈顶元素来进行运算得到我们想要的结果。而比如每日温度这道题中,我们创建一个栈来记录数组的下标,当下一个元素的值比前一个大的时候将栈中元素pop后用新的下标去替换,否则往栈中push新的下标,此时栈中的记录的下标对应的元素肯定是单调递减的,也就是题解中所说的单调栈了。
此外,通过这次刷题,还知道了可以用不定长数组来模拟栈操作,方便从栈底向栈顶遍历。因为栈的常用方法中并没有提供遍历栈的API,所以有的时候我们可以通过LinkedList去模拟栈操作。

当LinkedList被当做栈来使用时,常用api及对应关系如下:

栈方法        等效方法
push(e)      addFirst(e)
pop()        removeFirst()
peek()       peekFirst()      isEmpty()  //判断是否为空
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值