题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:可以用一个变量来保存当前最小的数,但是这样在最小的数出栈之后剩余数的最小数怎么获取?这就需要使用一个同样大小的辅助栈,辅助栈保存当前最小的数,这样就能实现题目所要求的min函数。
实现代码:
import java.util.Stack;
public class Solution {
public Stack mainStack;
public Stack minStack;
public Solution() {
mainStack = new Stack();
minStack = new Stack();
}
public void push(int node) {
mainStack.push(node);
if(minStack.isEmpty()) {
minStack.push(node);
}
else {
int cur = minStack.peek();
if(node < cur)
minStack.push(node);
else
minStack.push(cur);
}
}
public void pop() {
if(!mainStack.isEmpty()) {
mainStack.pop();
minStack.pop();
}
}
public int top() {
if(!mainStack.isEmpty())
return mainStack.peek();
else
return 0;
}
public int min() {
if(!minStack.isEmpty())
return minStack.peek();
else
return 0;
}
}
https://www.cnblogs.com/wxisme/category/672272.html