Leetcode-面试题 03.05 栈排序

作者: itbird01 | 来源:发表于2021-10-11 06:55 被阅读0次

面试题 03.05. 栈排序

解题思路

最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中
1.题意中,要求只可使用一个临时栈来存放数据,不可使用其他数据结构(int[]/list)
2.用一个栈来存储已排序的数据,最小的元素在栈顶,最大的元素在栈底
3.push操作时,将已排序栈迭代出栈,并且把出栈的元素,入栈到临时栈,直到找到元素大于x的元素或者已排序栈为空,停止出栈
4.停止出栈之后,先将刚刚出栈的大于x的元素,入栈到排序栈,然后将x入栈,然后再将临时栈元素一一入栈到排序栈
5.pop或者peer或者isEmpty操作,直接对已排序栈进行相应栈操作即可

解题遇到的问题

后续需要总结学习的知识点

1.用liist或者deque去实现?
2.deque源码如何实现的?

##解法
import java.util.Stack;

class SortedStack {
    Stack<Integer> sortStack = null;
    Stack<Integer> tempStack = null;

    public SortedStack() {
        sortStack = new Stack<Integer>();
        tempStack = new Stack<Integer>();
    }

    public void push(int val) {
        tempStack.clear();

        while (!sortStack.isEmpty()) {
            int temp = sortStack.pop();
            if (temp > val) {
                sortStack.push(temp);
                break;
            } else {
                tempStack.push(temp);
            }
        }

        sortStack.push(val);

        while (!tempStack.isEmpty()) {
            sortStack.push(tempStack.pop());
        }
    }

    public void pop() {
        if (sortStack.isEmpty()) {
            return;
        }
        sortStack.pop();
    }

    public int peek() {
        if (sortStack.isEmpty()) {
            return -1;
        }
        return sortStack.peek();
    }

    public boolean isEmpty() {
        return sortStack.isEmpty();
    }
}

相关文章

  • Leetcode-面试题 03.05 栈排序

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

  • 面试题 03.05. 栈排序

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

  • LeetCode-排序算法

    LeetCode-排序算法 时间复杂度 排序算法平均时间复杂度冒泡排序O(n2)选择排序O(n2)插入排序O(n2...

  • Runtime面试题与栈区参数

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

  • Leetcode-面试题 03.04 化栈为队

    面试题 03.04. 化栈为队[https://leetcode-cn.com/problems/implemen...

  • 第十四节-排序优化

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

  • 栈系列之-排序

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

  • 1.算法-栈和队列

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

  • Leetcode-面试题 03.02 栈的最小值

    面试题 03.02. 栈的最小值[https://leetcode-cn.com/problems/min-sta...

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

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

网友评论

    本文标题:Leetcode-面试题 03.05 栈排序

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