蕴含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的栈顶元素
- 这个是纯栈来源gao*daima.com搞@代#码网
- 用列表linkedlist示意栈
- 这个是人家他人的思路,永远拿入栈元素和栈B的栈顶元素进行比照,而后再栈B中入两者中小的那个元素,而后在出栈的时候就不必比照是不是相等了,两个一起出栈即可