题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路
1.栈常用方法:
- boolean empty():如果堆栈是空的,则返回true,当堆栈包含元素时,返回false
- Object peek():返回位于栈顶的元素,但是并不在堆栈中删除它
- Object pop():返回位于栈顶的元素,并在进程中删除它
- Object push (Object element ):将element压入堆栈,同时也返回element
-
int search(Object element):在堆栈中搜索element,如果发现了,则返回它相对于栈顶
的偏移量,否则,返回-1
image.png
代码
import java.util.Stack;
public class Solution {
Stack<Integer> dataStack = new Stack<>();
Stack<Integer> tempStack = new Stack<>();
public void push(int node) {
dataStack.push(node);
if (tempStack.empty()) {
tempStack.push(node);
} else if (node < tempStack.peek()) {
tempStack.push(node);
} else {
tempStack.push(tempStack.peek());
}
}
public void pop() {
dataStack.pop();
tempStack.pop();
}
public int top() {
if(!dataStack.empty()) {
return dataStack.peek();
}
return 0;
}
public int min() {
if(!tempStack.empty()) {
return tempStack.peek();
}
return 0;
}
}
网友评论