算法题:实现一个栈,要求实现该栈的出栈,入栈。返回最小值的时间复杂度为O(1)
实现一个栈,要求实现该栈的出栈,入栈。返回最小值的时间复杂度为O(1)
解题思路:
两个栈,min是存储最小值的。
有这样一组数据
第一个方法:push方法,往mun里面入栈,5入栈,判断mun有没有数据
同时往两个栈里放数据
7入栈,min里数据比mun里数据小就不用插入数据
下一个数据4,判断有数据 4比5小,放入min
4放入min
同理插入2
之后push完方法。
有 pop方法:出栈
判断栈顶两个是否相等,
相等出栈。不相等左边出栈
比如先插入一个3,3>2,
3先出栈,2不出去
之后2=2,都出栈。4=4出栈。
返回最小值:把2输出就可以,不用出栈。
O(n),级别的复杂度是根据我们的规模来的。
代码实现:
import java.util.Stack;
public class StackMin {
Stack
Stack
共有 0 条评论