【LeetCode-面试题】栈排序
程序员文章站
2022-07-02 11:01:41
...
面试题 03.05. 栈排序
栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。
参考
class SortedStack {
private Stack<Integer> stack;
public SortedStack() {
this.stack = new Stack<>();
}
//数据栈从空开始,每次push元素时,push后的结果都可以保证最小元素位于栈顶,且保证出栈顺序递增
public void push(int val) {
// 辅助栈
Stack<Integer> temp = new Stack<>();
while(!stack.isEmpty()) {
// 待入栈元素值 > 该栈的栈顶元素,此时数据栈更小的栈顶元素进入辅助栈
if(stack.peek() < val) {
temp.push(stack.pop());
} else {
break;
}
}
stack.push(val);
while(!temp.isEmpty()) {
stack.push(temp.pop());
}
}
public void pop() {
if(stack.isEmpty()) {
return;
}
stack.pop();
}
public int peek() {
if(stack.isEmpty()) {
return -1;
}
return stack.peek();
}
public boolean isEmpty() {
return stack.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();
*/
推荐阅读
-
面试题【栈和队列:用两个栈实现队列】
-
【前端刷题笔记02】字节跳动2019面试题-一只想做全栈的猫-SegmentFault思否
-
【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序
-
腾讯面试题,js处理1千万条数据排序并且页面不卡顿
-
数组\字符串\排序\栈队列
-
归并排序栈溢出异常Exception in thread "main" java.lang.*Error
-
九章算法 | Amazon 面试题:排序矩阵中的从小到大第k个数
-
面试题-给定一段文本,找到包含字段串a,同时剔除包含字符串b的行,然后使用“:”分割取所有列,最后对结果排序,统计每个值出现的次数
-
九章算法 | 字节跳动面试题:合并k个排序数组
-
用一个栈实现另一个栈的排序