包含min函数的栈
题目分析
本题如果用for对比找最小值,那就是很简单,但是复杂度很高,所以难点就是怎么将时间复杂度降到O1
所以此时应该用一个辅助栈B,栈A就是正常入栈出栈,栈B是栈A入栈出栈的最小元素,且最小元素一直在栈顶,调用min函数的时候直接出栈即可
比如9入栈,此时min就是9,9也入栈A,然后10入栈,此时min还是9.那10就不入栈B,然后7入栈,此时min是7,所以7也入栈B,然后3入栈,此时min是3,所以3也入栈B,然后5入栈,此时min是3,那5就不入栈B
思路
- 入栈:如果B为空,那么元素就得入栈B,如果新加的元素比栈B的栈顶元素小,那么元素也得入栈B
- 出栈:如果A出栈元素=B栈顶元素,那B也得出栈
- top:返回A的栈顶元素
- min:返回B的栈顶元素
- 这个是纯栈
- 用列表linkedlist表示栈
- 这个是人家别人的思路,永远拿入栈元素和栈B的栈顶元素进行对比,然后再栈B中入两者中小的那个元素,然后在出栈的时候就不用对比是不是相等了,两个一起出栈即可
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。