面试题 03.05. 栈排序
栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。
class SortedStack {
private Stack<Integer> data = new Stack<>();
private Stack<Integer> help = new Stack<>();
public SortedStack() {
super();
}
public void push(int val) {
if(isEmpty()) {
data.push(val);
while(!help.isEmpty()) {
data.push(help.pop());
}
} else {
int top = peek();
if(top >= val) {
data.push(val);
while(!help.isEmpty()) {
data.push(help.pop());
}
} else {
help.push(data.pop());
push(val);
}
}
}
public void pop() {
if(!isEmpty()) {
data.pop();
}
}
public int peek() {
if(isEmpty()) {
return -1;
} else {
return data.peek();
}
}
public boolean isEmpty() {
return data.isEmpty();
}
}
/**
* Your SortedStack object will be instantiated and called as such:
* SortedStack obj = new SortedStack();
* obj.push(val);
* obj.pop();
* int param_3 = obj.peek();
* boolean param_4 = obj.isEmpty();
*/
网友评论