程序员面试金典(LeetCode)-面试题03.05(栈排序)

    技术2023-10-28  109

    环路检测

    题目描述 算法思想

    实现栈排序,需要利用一个辅助栈,我们拿小的元素在栈顶举例。 1、如果栈为空,则压入元素。

    2、如果栈非空,则将待压入元素与栈顶元素比较,如果比栈顶元素小则直接压入,否则,将栈顶元素出栈至辅助栈,然后再进行比较,直到可以直接压入,最后再把辅助栈中的元素压回即可。

    代码实现

    class SortedStack: def __init__(self): self.stk = [] def push(self, val: int) -> None: tmp_stk = [] while self.stk and self.stk[-1] < val: tmp_stk.append(self.stk.pop()) self.stk.append(val) while tmp_stk: self.stk.append(tmp_stk.pop()) def pop(self) -> None: if self.isEmpty(): return self.stk.pop() def peek(self) -> int: if self.isEmpty(): return -1 return self.stk[-1] def isEmpty(self) -> bool: return len(self.stk) == 0 # Your SortedStack object will be instantiated and called as such: # obj = SortedStack() # obj.push(val) # obj.pop() # param_3 = obj.peek() # param_4 = obj.isEmpty()
    Processed: 0.009, SQL: 10