问题描述:
栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作: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)#插入要插入的值