实现包含min,max,push,pop函数的栈
2017-09-26 21:20
260 查看
定义辅助栈分别保存最大值、最小值。
import java.util.Scanner;
import java.util.Stack;
public class Test {
public static class myStack {
Stack <Integer> dataStk = new Stack<Integer>();
Stack <Integer> minStk = new Stack<Integer>();
Stack <Integer> maxStk = new Stack<Integer>();
public void push(int node) {
dataStk.push(node);
if(minStk.isEmpty() || minStk.peek()>node){
minStk.push(node);
}else{
minStk.push(minStk.peek());
}
if(maxStk.isEmpty() || maxStk.peek()<node){
maxStk.push(node);
}else{
maxStk.push(maxStk.peek());
}
}
public void pop() {
dataStk.pop();
minStk.pop();
maxStk.pop();
}
public int top() {
return dataStk.peek();
}
public int min() {
return minStk.peek();
}
public int max() {
return maxStk.peek();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int arr[]=new int
;
myStack mystk = new myStack();
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
mystk.push(arr[i]);
}
mystk.pop();
System.out.println(mystk.max()+","+mystk.min());
}
}
import java.util.Scanner;
import java.util.Stack;
public class Test {
public static class myStack {
Stack <Integer> dataStk = new Stack<Integer>();
Stack <Integer> minStk = new Stack<Integer>();
Stack <Integer> maxStk = new Stack<Integer>();
public void push(int node) {
dataStk.push(node);
if(minStk.isEmpty() || minStk.peek()>node){
minStk.push(node);
}else{
minStk.push(minStk.peek());
}
if(maxStk.isEmpty() || maxStk.peek()<node){
maxStk.push(node);
}else{
maxStk.push(maxStk.peek());
}
}
public void pop() {
dataStk.pop();
minStk.pop();
maxStk.pop();
}
public int top() {
return dataStk.peek();
}
public int min() {
return minStk.peek();
}
public int max() {
return maxStk.peek();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int arr[]=new int
;
myStack mystk = new myStack();
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
mystk.push(arr[i]);
}
mystk.pop();
System.out.println(mystk.max()+","+mystk.min());
}
}
相关文章推荐
- 设计一个包含pop,push,min在内的栈,并且各个函数的时间复杂度均为o(1)
- 练习系列 - 3、设计包含min函数的栈,push、pop、min的时间复杂度都为O(1),仿照APR_RING采用宏实现
- 包含min,push,pop函数的栈,时间为O(1)
- 设计包含min 函数的栈(push\pop\min)
- 每天学习一算法系列(3)(设计包含min函数的栈,要求函数min、push以及pop的时间复杂度都是O(1))
- 每天学习一算法系列(3)--设计包含min函数的栈,要求函数min、push以及pop的时间复杂度都是O(1))
- 设计包含min函数的栈,要求函数min、push以及pop的时间复杂度都是O(1)
- 实现一个栈,要求push(入栈),pop(出栈),min(返回栈中的最小值)的时间复杂度为O(1);
- 【15】Design a stack which has push pop min max
- 实现一个 能在O(1)时间复杂度 完成 Push、Pop、Min操作的 栈
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)
- 设计桟的 min、push以及pop的时间复杂度都是O(1) Java 实现
- 实现一个栈,push、pop、求栈中最小值min的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 设计栈,在O(1)的时间复杂内实现push,pop,min
- 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现O(1)时间复杂度带有min和max 函数的栈
- 实现一堆栈,要求三个操作,Pop,Push,GetMaxValue,时间均为O(1)