2025.09.05 用队列实现栈 & 有效的括号 & 删除字符串中的所有相邻重复项

225. 用队列实现栈 - 力扣(LeetCode)

关键在于入栈,q1作为存储队列,q2作为压栈操作队列,先将元素压入q2,再按顺序将q1的元素转移到q2,同时交换q1,q2 的引用。

python 复制代码
class MyStack:

    def __init__(self):
        self.q1 = deque()
        self.q2 = deque()

    def push(self, x: int) -> None:
        self.q2.append(x)
        while self.q1 :
            self.q2.append(self.q1.popleft())
        self.q1, self.q2 = self.q2, self.q1

    def pop(self) -> int:
        return self.q1.popleft()

    def top(self) -> int:
        return self.q1[0]

    def empty(self) -> bool:
        return len(self.q1) == 0


# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()

deque和queue的区别:

  1. queue是多线程安全的,deque不是

  2. queue的效率比较慢,操作只能是先进先出

  3. deque在单线程中效率高,有多样的操作(在两端进行添加(append()appendleft()) 和删除 (pop()popleft()) 操作时,时间复杂度为 O(1)

20. 有效的括号 - 力扣(LeetCode)

用栈的方式判断括号是否合法。

python 复制代码
class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        for x in s:
            if x == '(' or x == '[' or x == '{':
                stack.append(x)
            else:
                if len(stack) == 0:
                    return False
                temp = stack.pop()
                if x == ')' and temp != '(':
                    return False
                if x == ']' and temp != '[':
                    return False
                if x == '}' and temp != '{':
                    return False    
        if not len(stack) == 0:
            return False
        return True

1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)

python 复制代码
class Solution:
    def removeDuplicates(self, s: str) -> str:
        stack = []
        for char in s :
            if len(stack) == 0:
                stack.append(char)
                continue
            top_char = stack[-1]
            if  top_char == char:
                stack.pop()
            else:
                stack.append(char)
        return ''.join(stack)
相关推荐
We་ct11 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·javascript·算法·leetcode·typescript
做怪小疯子14 小时前
华为笔试0429
python·numpy
Warson_L14 小时前
Dictionary
python
王老师青少年编程15 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
叼烟扛炮15 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
天疆说15 小时前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习
寒山李白16 小时前
解决 python-docx 生成的 Word 文档打开时弹出“无法读取内容“警告
python·word·wps·文档·docx·qoder
wuweijianlove16 小时前
关于算法设计中的代价函数优化与约束求解的技术7
算法
leoufung17 小时前
LeetCode 149: Max Points on a Line - 解题思路详解
算法·leetcode·职场和发展
样例过了就是过了17 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划