代码思路:
1、构造一个 MyStack 类;
2、添加两个私有的成员变量——两个栈;
3、添加无参构造函数为两个私有成员变量创建对象;
4、添加成员方法——入栈方法、出栈方法、getmin方法
————————————————————————————————————————
MyStack.java
import java.util.Stack;
public class MyStack {
private Stack<Integer> stackData;
private Stack<Integer> stackMin;
public MyStack() {
this.stackData = new Stack<Integer>();
this.stackMin = new Stack<Integer>();
}
public void push(int newNum){
// this.stackMin 的 push 条件
if(stackData.isEmpty())this.stackMin.push(newNum);
else if(newNum <= this.stackMin.peek())this.stackMin.push(newNum);
this.stackData.push(newNum);
}
public int pop(){
if(this.stackData.isEmpty())throw new RuntimeException("Your stack is empty");
int value = this.stackData.pop();
if(value <= this.stackMin.peek())this.stackMin.pop();
return value;
}
public int getmin(){
if(this.stackMin.isEmpty())throw new RuntimeException("Your stack is empty");
return this.stackMin.peek();
}
}
————————————————————————————————————————
test.java
public class test {
public static void main(String[] args) {
MyStack s = new MyStack();
s.push(4);
s.push(7);
s.push(8);
s.push(1);
for (int i = 0; i < 4; i++) {
System.out.println("当前栈中最小值=" + s.getmin());
System.out.println("当前栈中弹出值=" + s.pop());
}
}
}
————————————————————————————————————————
第一次使用的 Java 语法:
1、在构造函数内为本类的成员变量创建对象;
2、栈的peek()函数;
3、抛出异常;
4、类中的 private 成员变量都加 this;
5、类的成员变量在创建时不赋初值,在构造函数中赋初值;
注:赋初值可以在构造方法中赋初值,也可以在 set 方法中赋初值(private)
————————————————————————————————————————
第一次使用的算法思路:
1、创造的新的数据结构满足以前的功能,再添加其他的功能;
2、stackMin 的功能是存储当前的最小值,如果最小值重复也要 push 进去;