这个题目思路较为明确,可以通过一个链表来实现。
push就是链表添加add
pop就使用链表删除remove(list.size() - 1)
top就使链表查询get(list.size() - 1)
min就将链表进行排序,然后取得最小值
代码如下
class MinStack {
List<Integer> list;
// int index = 0;
public MinStack() {
list = new ArrayList<>();
// index = list.size();
}
public void push(int x) {
list.add(x);
// index++;
}
public void pop() {
list.remove(list.size() - 1);
// index--;
}
public int top() {
return list.get(list.size() -1 );
}
public int min() {
List<Integer> newList = new ArrayList<>();
newList.addAll(list);
Collections.sort(newList);
return newList.get(0);
}
}
使用Collections集合工具类来实现对集合的排序
链表的复制需使用addAll将一个链表的数据全部加载到另一个链表中(这里由于每次调用min都新创了一个对象所以不用担心数据累积)
链表的访问使用方法get,数组下标访问直接使用[ ](链表是一个封装好的java类,所以所有操作使用方法)