算法题:实现一个栈,要求实现该栈的出栈,入栈。返回最小值的时间复杂度为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 num = new Stack<>();
Stack min = n

算法题:实现一个栈,要求实现该栈的出栈,入栈。返回最小值的时间复杂度为O(1)最先出现在Python成神之路

版权声明:
作者:倾城
链接:https://www.techfm.club/p/26185.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>