自己实现一个栈,其中包含出栈函数pop();入栈函数push(int data);计算栈中当前最大值int max();计算当前栈中最小值int min()
输入描述:
输入一个整个n和n个整数;
输出描述:
输出当前栈的最大值和最小值
示例1
输入
5 1 2 3 -1 4
输出
3,-1 (说明:全部入栈后,需要执行一次出栈操作)
算法思想:
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;
public class Main{
static class MyStack {
Deque<Integer> xStack;
Deque<Integer> minStack;
Deque<Integer> maxStack;
// 构造函数
public MyStack(){
xStack = new LinkedList<>();
minStack = new LinkedList<>();
maxStack = new LinkedList<>();
minStack.push(Integer.MAX_VALUE);
maxStack.push(Integer.MIN_VALUE);
}
public int min(){
return minStack.peek();
}
public int max(){
return maxStack.peek();
}
public void push(int x){
xStack.push(x);
minStack.push(Math.min(minStack.peek(), x));
maxStack.push(Math.max(maxStack.peek(), x));
}
public int pop(){
int popResult = xStack.pop();
minStack.pop();
maxStack.pop();
return popResult;
}
}
public static void main(String[] args) {
MyStack myStack = new MyStack();
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] array = new int[N];
for (int i = 0; i < array.length; i++) {
array[i] = scanner.nextInt();
}
for (int i = 0; i < array.length; i++) {
myStack.push(array[i]);
}
myStack.pop();
scanner.close();
System.out.print(myStack.max()+“,”+myStack.min());
}
}