美文网首页
面试题 03.05. 栈排序

面试题 03.05. 栈排序

作者: 编程小王子AAA | 来源:发表于2020-08-14 16:57 被阅读0次

面试题 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();
 */

相关文章

  • Leetcode-面试题 03.05 栈排序

    面试题 03.05. 栈排序[https://leetcode-cn.com/problems/sort-of-s...

  • 面试题 03.05. 栈排序

    面试题 03.05. 栈排序 栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放...

  • Runtime面试题与栈区参数

    Runtime面试题与栈区参数Runtime面试题与栈区参数

  • 第十四节-排序优化

    优化快速排序 三数取中法,九数取中法 随机法 限制递归深度 自己实现函数调用栈,手动模拟入栈出栈 举例分析排序函数...

  • 栈系列之-排序

    一、栈实现排序概述 将一个栈内的元素实现排序,光靠一个栈肯定是不够的,因为无法实现元素的调动,所以需要一个辅助栈,...

  • 1.算法-栈和队列

    题目 解题思路 这题需要将原先无序的栈进行排序,变成从栈顶到栈底大到小排序,且只允许申请一个栈,即一个变量来实现,...

  • 数据结构与算法之栈(四)

    一 目录 栈的介绍 栈的接口设计 栈的应用 - 浏览器前进后退 栈的使用 - 匹配有效括号 栈相关面试题 二 简介...

  • 数据结构

    知识点:堆栈,队列,排序算法 堆栈: 一.基本概念: 栈顶,栈底,出栈(pop),入栈(push),空栈 1.堆栈...

  • Swift语言实现几个简单算法

    栈队列二分查找插入排序归并排序快速排序 栈 队列 二分查找 二分查找是用于快速查找到目标数据(已排序)的一种查找方...

  • 各种排序算法

    排序算法包括很多,常见的有快排,堆排序,冒泡排序,归并排序,选择排序,插入排序等, 各种排序算法经常出现在面试题中...

网友评论

      本文标题:面试题 03.05. 栈排序

      本文链接:https://www.haomeiwen.com/subject/godudktx.html