实现一个栈,在基本功能的基础上,可以返回栈中最小值

Posted 放下也不自在

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现一个栈,在基本功能的基础上,可以返回栈中最小值相关的知识,希望对你有一定的参考价值。


import java.util.Stack;

/**
* 实现一个栈,在基本功能的基础上,可以返回栈中最小值
*/
public class GetMinStack {

public static class MyStack {

public Stack<Integer> stackData;

public Stack<Integer> stackMin;

public MyStack() {
this.stackData = new Stack<>();
this.stackMin = new Stack<>();
}

public void push(Integer value) {
if (stackMin.isEmpty()) {
stackMin.push(value);
} else if (value <= getMin()) {
stackMin.push(value);
} else {
stackMin.push(getMin());
}
stackData.push(value);
}

public Integer pop() {
if (stackData.isEmpty()) {
System.out.println("the stack is empty");
return null;
}
stackMin.pop();
return stackData.pop();
}

public Integer getMin() {
if (stackMin.isEmpty()) {
System.out.println("the stack is empty");
return null;
}
return stackMin.peek();
}

}

public static class MyStack2 {

public Stack<Integer> stackData;

public Stack<Integer> stackMin;

public MyStack2() {
this.stackData = new Stack<>();
this.stackMin = new Stack<>();
}

public void push(Integer value) {
if (stackMin.isEmpty()) {
stackMin.push(value);
} else if (value <= getMin()) {
stackMin.push(value);
}
stackData.push(value);
}

public Integer pop() {
if (stackData.isEmpty()) {
System.out.println("the stack is empty");
return null;
}
if (stackData.peek() == getMin()) {
stackMin.pop();
}
return stackData.pop();
}

public Integer getMin() {
if (stackMin.isEmpty()) {
System.out.println("the stack is empty");
return null;
}
return stackMin.peek();
}

}

}

/* 如有错误,欢迎批评指正 */

以上是关于实现一个栈,在基本功能的基础上,可以返回栈中最小值的主要内容,如果未能解决你的问题,请参考以下文章

左神算法之获取栈中最小值

设计一个有getMin功能的栈

在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO

算法题1-设计一个有getMin功能的栈

左神算法书籍《程序员代码面试指南》——1_01设计一个有getMin功能的栈

设计一个有getMin功能的栈