包含min函数的栈
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
题目解析
在min函数中,找出栈中最小的数,用迭代器来实现
主要熟悉栈中的一些方法:
1 boolean empty()
测试堆栈是否为空。
2 Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。
3 Object pop( )
移除堆栈顶部的对象,并作为此函数的值返回该对象。
4 Object push(Object element)
把项压入堆栈顶部。
5 int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。
代码解析
import java.util.Stack;
import java.util.Iterator;
public class Solution {
//创建一个栈,对栈内数据进行操作
Stack<Integer> stack=new Stack<Integer>();
//向栈中添加数据
public void push(int node) {
stack.push(node);
}
//移除栈顶的元素并返回该对象
public void pop() {
stack.pop();
}
//查看栈顶的元素,然后返回该元素
public int top() {
return stack.peek();
}
//查看栈顶元素,并将这个元素设置为最小数,
//接下来用迭代器判断后面的数,如果后面的数小于min,
//则将后面的数赋值给min
public int min() {
int min=stack.peek();
int temp=0;
Iterator<Integer> iterator = stack.iterator();
while(iterator.hasNext()){
temp=iterator.next();
if(temp<min){
min=temp;
}
}
return min;
}
}