记录一下leetcode刷题,大牛请绕道
思路
这个题的核心点还是在于用常数时间内检索到最小元素的栈,也就是用空间换时间。这样的话我们设计一个辅助栈,当栈为空的时候,第一次push的话,主栈和辅助栈都同时push传入的值;如果栈不为空,那么就先从辅助栈获取栈顶的值,然后将插入的值与栈顶的值进行比较,将数值小的那个值push进入辅助栈,这样最后调用GetMin()
的话就是从辅助栈的栈顶拿值,这个值一定是最小值了。
代码
1 | type MinStack struct { |
记录一下leetcode刷题,大牛请绕道
这个题的核心点还是在于用常数时间内检索到最小元素的栈,也就是用空间换时间。这样的话我们设计一个辅助栈,当栈为空的时候,第一次push的话,主栈和辅助栈都同时push传入的值;如果栈不为空,那么就先从辅助栈获取栈顶的值,然后将插入的值与栈顶的值进行比较,将数值小的那个值push进入辅助栈,这样最后调用GetMin()
的话就是从辅助栈的栈顶拿值,这个值一定是最小值了。
1 | type MinStack struct { |
文章作者:xianyu123
发布时间:2022年01月09日 - 16:42
最后更新:2022年01月09日 - 16:55
原始链接:http://0clickjacking0.github.io/2022/01/09/leetcode力扣-155最小栈-go实现/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。