码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-29 01:30:04      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:ISE   push   min()   stack   返回   integer   val   turn   pop   


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();
}

}

}

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

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

标签:ISE   push   min()   stack   返回   integer   val   turn   pop   

原文地址:https://www.cnblogs.com/laydown/p/12799227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!