package jianzhioffer;
import java.util.ArrayList;
import java.util.Stack;
/**
* 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。即:实现一个栈,能够得到栈最小元素的min函数,要求复杂度为O(1)
*
*/
public class Solution19 {
/*
* 方法:用一个栈保存数据,用另一个栈保存依次入栈最小的数。
* 每次入栈时,如果入栈元素比min中的栈顶元素小或等于则入栈,否则不入栈。
* 最后输出栈顶元素是最小值
*/
/*Stack<Integer> data = new Stack<Integer>();
Stack<Integer> min = new Stack<Integer>();
Integer temp = null;
public void push(int node) {
if(temp!=null){
if(node<=temp){
temp = node;
min.push(node);
}
data.push(node);
}else{
temp = node;
data.push(node);
min.push(node);
}
}
public void pop() {
int num = data.pop();
int num2 = min.pop();
if(num != num2){
min.push(num2);
}
}
public int top() {
int num = data.pop();
data.push(num);
return num;
}
public int min() {
int num = min.pop();
min.push(num);
return num;
}*/
static ArrayList<Integer> list = new ArrayList<Integer>();
public void push(int node){
list.add(0,node);
}
public void pop(){
list.get(0);
list.remove(0);
}
public static int top(){
return list.get(0).intValue();
}
public static int min(){
int temp = top();
for(int i = 1;i<list.size();i++){
if(temp>list.get(i).intValue()){
temp = list.get(i).intValue();
}
}
return temp;
}
public static void main(String[] args) {
Solution19 test = new Solution19();
test.push(5);
test.push(4);
test.push(3);
test.push(8);
test.push(1);
test.push(12);
test.push(11);
System.out.println(min());;
}
}
剑指offer题19
最新推荐文章于 2023-05-07 22:52:08 发布