定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
代码如下:
定义两个栈,一个stackData,一个stackMin。将数组中的元素一个个压入stackData栈的时候,如果第一次压入栈,则将第一个元素也压入到stackMin栈中去,然后继续压入第二个元素到stackData里面,在压入的时候需要判断一下压入的值是否比stackMin中栈顶的值大,如果大,则压入一个和栈顶一样的元素进入stackMin,如果小,则也压入第二个元素到stackMin,依次类推直到最后一个元素截止就能得到栈最小元素。
package com.stack;
import java.util.Stack;
public class Solution {
public Stack<Integer> stackData =new Stack<Integer>();
public Stack<Integer> stackMin =new Stack<Integer>();
public void push(int node) {
stackData.push(node);
if(stackMin.isEmpty()){
stackMin.push(node);
}else if(node< stackMin.peek().intValue()){
stackMin.push(node);
}else{
stackMin.push(stackMin.peek());
}
}
public void pop() {
stackData.pop();
stackMin.pop();
}
public int top() {
return stackData.pop();
}
public int min() {
return stackMin.peek();
}
}