12. 带最小值操作的栈关注问题
描述:实现一个栈, 支持以下操作:
push(val)
将 val 压入栈pop()
将栈顶元素弹出, 并返回这个弹出的元素min()
返回栈中元素的最小值
要求 O(1) 开销.
样例 2:
输入:
push(1)
min()
push(2)
min()
push(3)
min()
输出:
1
1
1
我的代码:
思路:用list来当作一个栈,假如依次输入【123】,就是入栈,
push(val)-
采用list的方法add进去
pop()-
出栈就是remove该元素,因为栈的特点是先进后出,所以remove的时候要主要拿的当前list.size-1
min()
-
Collections.sort 排序放入一个新的list,然后拿出第一个值来
public class MinStack {
ArrayList<Integer> val=new ArrayList<Integer>();
public MinStack() {
// do intialization if necessary
}
/*
* @param number: An integer
* @return: nothing
*/
public void push(int number) {
val.add(number);
// write your code here
}
/*
* @return: An integer
*/
public int pop() {
// write your code here
if(val.get(0)!=null){
int intg=val.get(val.size()-1);
val.remove(val.size()-1);
return intg;
}
return 0;
}
/*
* @return: An integer
*/
public int min() {
ArrayList<Integer>vall=new ArrayList<Integer>();
vall.addAll(val);
Collections.sort(vall);
return vall.get(0);
// write your code here
}
}