题目描述:
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
解题思路:
这道题主要还是实现栈的功能,至于min函数可以将栈元素全部弹出进行比较即可!由于Java自身带有Stack类,可直接使用,这里,自定义实现栈的功能(利用链表实现)。
Java代码实现:
public class MyStack {
private ListNode header;//元素
private int elementCount;//元素计数
public MyStack() { //默认初始化
header = null;
elementCount = 0;
}
public void push(int node){ //总是让新进栈的元素处于链表头部,方便弹出和查找操作。
ListNode newNode = new ListNode(node);
newNode.next = header;
header = newNode;
elementCount++;
}
public int pop(){//弹出
ListNode tempNode = header;
header = header.next;
elementCount--;
return tempNode.val;
}
public int top(){//查询栈顶元素
return header.val;
}
public int min(){ //完全遍历出栈,然后比较大小
ArrayList<Integer> list = new ArrayList<>();
while(header != null){
list.add(pop());
}
Collections.sort(list);
return (Integer) list.get(0);
}
}
END