蓝桥杯Leecode——栈排序

简介: 蓝桥杯Leecode——栈排序

问题描述:


栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。


思路分析:


1.涉及到排序 并且只允许四种操作 那么引入临时属性self.tmp>>>List


2:push指将元素压入栈顶 pop是删除栈顶的元素并返回它 peek是返回栈顶的元素


isEmpty判断栈是否为空


3:比较排序就要利用好pop能返回值这一用途


实现代码:


class SortedStack:
    def __init__(self):
        self.stack=[]
        self.tmp=[]#临时空间
    def push(self, val: int) -> None:
        if  not self.stack:#如果空栈 直接压栈
            self.stack.append(val)
        else:
            while self.stack and val>self.stack[-1] :#如果val大于栈顶且stack非空 and前后顺序不可调换 否则报错 "out of index range"
                self.tmp.append(self.stack.pop())#从stack出栈 从tmp进栈
            self.stack.append(val)#插入要插入的值


目录
相关文章
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 217. 存在重复元素 算法解析
☆打卡算法☆LeetCode 217. 存在重复元素 算法解析
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 219. 存在重复元素 II 算法解析
☆打卡算法☆LeetCode 219. 存在重复元素 II 算法解析
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 220. 存在重复元素 III 算法解析
☆打卡算法☆LeetCode 220. 存在重复元素 III 算法解析
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 215. 数组中的第K个最大元素 算法解析
☆打卡算法☆LeetCode 215. 数组中的第K个最大元素 算法解析
|
7月前
|
算法 搜索推荐
☆打卡算法☆LeetCode 148. 排序链表 算法解析
☆打卡算法☆LeetCode 148. 排序链表 算法解析
|
7月前
|
算法 搜索推荐 vr&ar
☆打卡算法☆LeetCode 147. 对链表进行插入排序 算法解析
☆打卡算法☆LeetCode 147. 对链表进行插入排序 算法解析
|
7月前
|
存储 算法 vr&ar
☆打卡算法☆LeetCode 155. 最小栈 算法解析
☆打卡算法☆LeetCode 155. 最小栈 算法解析
|
Serverless
LeetCode每日一题题解:540. 有序数组中的单一元素
LeetCode每日一题题解:540. 有序数组中的单一元素
蓝桥杯Leecode——栈排序
蓝桥杯Leecode——栈排序
94 0
|
算法 Java
【java刷算法】牛客—剑指offer3栈、数组、递归、二分法的初步练习
✨今日三剑 JZ9 用两个栈实现队列 JZ10 斐波那契数列 JZ11 旋转数组的最小数字
【java刷算法】牛客—剑指offer3栈、数组、递归、二分法的初步练习