之前面试被面试官问到的一个问题,当时只是简单地说了一下思路,现在重新实现了一下。
import java.util.Arrays;
import java.util.EmptyStackException;
/**
* 2 * @Author: Mr.Li
* 3 * @Date: 2022/6/19 10:38
* 4
*/
public class ArrayStack {
private int[] data = new int[10];
private int size = 0;
private int minValue = Integer.MAX_VALUE;
/**
* 入栈
* @param node
*/
public void push(int node) {
//判断是否需要扩容
if(size+1 > data.length){
data = Arrays.copyOf(data, data.length*2);
}
data[size++] = node; //元素入栈
if(minValue > node) minValue = node;
}
/**
* 查看栈顶元素
* @return
*/
public int peek(){
//判断栈空
if(size == 0) throw new EmptyStackException();
return data[size - 1]; //返回栈顶元素
}
/**
* 出栈
* @return
*/
public int pop() {
//判断栈空
if(isEmpty()) throw new EmptyStackException();
int res = data[size-1];
size--; //删除栈顶元素
return res; //返回栈顶元素
}
/**
* 判空
* @return
*/
public boolean isEmpty(){
return size == 0;
}
/**
* 获取栈中最小元素
* @return
*/
public int min() {
if(isEmpty()) throw new EmptyStackException();
return minValue;
}
**/
}