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)
相关推荐
装不满的克莱因瓶几秒前
实现矩阵的点积:从数学原理到 NumPy 实战
人工智能·线性代数·算法·机器学习·矩阵·numpy
HZ·湘怡几秒前
树 的定义 与 性质
算法·
梦想的颜色1 分钟前
Docker 入门指南:从零开始掌握容器化技术
运维·服务器·vscode·python·算法·docker·云原生
Soari2 分钟前
GitHub 开源项目解析:D4Vinci/Scrapling —— Python 网页抓取与自动化处理工具
python·开源·github·python爬虫·网页抓取·异步抓取
oort1233 分钟前
VLStream 全开源决策式 AI 视频平台 技术视角完整说明
大数据·开发语言·人工智能·经验分享·python·开源·音视频
Cloud_Shy6184 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第二章 Item 10 - 12)
c语言·开发语言·网络·人工智能·windows·python·编辑器
cpp_25014 分钟前
P10109 [GESP202312 六级] 工作沟通
数据结构·c++·算法·题解·洛谷·gesp六级
吴可可1234 分钟前
CAD二次开发中多段线定点分割技巧
算法
ʚ希希ɞ ྀ7 分钟前
全排列 --- 回溯
算法·leetcode·深度优先
玉树临风ives8 分钟前
atcoder ABC 460 题解
数据结构·c++·算法