蓝桥杯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)#插入要插入的值


目录
打赏
0
0
0
0
10
分享
相关文章
快排&超详细,Leetcode排序数组题目带你升华掌握(上)
快排&超详细,Leetcode排序数组题目带你升华掌握
78 0
leecode刷题 将有序数组转换为二叉搜索树
给定一个升序排列的整数数组 `nums`,要求将其转换为一棵高度平衡的二叉搜索树(BST)。通过递归方法,选择数组中间元素作为根节点,左半部分构建左子树,右半部分构建右子树。优化后的代码使用索引递归,避免了数组复制操作,提高了效率。
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
44 0
|
8月前
|
【海贼王的数据航海】排序——直接选择排序|堆排序
【海贼王的数据航海】排序——直接选择排序|堆排序
35 0
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
以下是内容的摘要: 本文介绍了三种排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻的逆序元素逐步排序,最坏情况下需要 O(n^2) 次比较。选择排序在每轮中找到剩余部分的最小元素并放到已排序序列的末尾,同样具有 O(n^2) 时间复杂度。插入排序则是将每个元素插入到已排序序列的正确位置,时间复杂度也是 O(n^2),但空间复杂度为 O(1)。
|
9月前
蓝桥杯真题代码记录(数位排序
蓝桥杯真题代码记录(数位排序
66 0
【刷题日记】剑指 Offer II 083. 没有重复元素集合的全排列
本次刷题日记的第 35 篇,力扣题为:剑指 Offer II 083. 没有重复元素集合的全排列 ,中等
|
9月前
【刷题-牛客】链表内指定区间反转
【刷题-牛客】链表内指定区间反转
64 0
快排&超详细,Leetcode排序数组题目带你升华掌握(下)
快排&超详细,Leetcode排序数组题目带你升华掌握(上)
162 0