当前位置: 首页 > web >正文

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

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

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

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.q1def 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)

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

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 Falsetemp = stack.pop()if x == ')' and temp != '(':return Falseif x == ']' and temp != '[':return Falseif x == '}' and temp != '{':return False    if not len(stack) == 0:return Falsereturn True

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

class Solution:def removeDuplicates(self, s: str) -> str:stack = []for char in s :if len(stack) == 0:stack.append(char)continuetop_char = stack[-1]if  top_char == char:stack.pop()else:stack.append(char)return ''.join(stack)

http://www.xdnf.cn/news/20369.html

相关文章:

  • 2025高教社数学建模国赛C题 - NIPT的时点选择与胎儿的异常判定(完整参考论文)
  • MySQL数据库——事务、索引和视图
  • Linux基础指令(入门必备2.0)
  • B.50.10.06-NoSQL数据库与电商应用
  • 深度学习:CNN 模型训练中的学习率调整(基于 PyTorch)
  • nVisual从入门到精通—应用实例
  • 【51单片机8*8点阵显示箭头动画详细注释】2022-12-1
  • vim 常用快捷键汇总
  • 学习 Android (二十) 学习 OpenCV (五)
  • FastVLM-0.5B 模型解析
  • React Hooks UseCallback
  • Docker Registry 实现原理、适用场景、常用操作及搭建详解
  • CRYPT32!CryptMsgUpdate函数分析两次CRYPT32!PkiAsn1Decode的作用
  • Linux之Docker虚拟化技术(四)
  • 解决Vue Canvas组件在高DPR屏幕上的绘制偏移和区域缩放问题
  • Process Explorer 学习笔记(第三章3.2.1):主窗口与进程列表详解
  • 9.5C++作业
  • Ruoyi-vue-plus-5.x第五篇Spring框架核心技术:5.2 Spring Security集成
  • 使用PyTorch构建卷积神经网络(CNN)实现CIFAR-10图像分类
  • 1688 商品详情抓取 API 接口接入秘籍:轻松实现数据获取
  • LeetCode Hot 100 第11天
  • 微前端架构:解构前端巨石应用的艺术
  • 【Android】制造一个ANR并进行简单分析
  • Kotlin中抽象类和开放类
  • 《从报错到运行:STM32G4 工程在 Keil 中的头文件配置与调试实战》
  • CRYPT32!ASN1Dec_SignedDataWithBlobs函数分析之CRYPT32!ASN1Dec_AttributesNC的作用是得到三个证书
  • 垃圾回收算法详解
  • 《sklearn机器学习——回归指标2》
  • Java内部类
  • 再读强化学习(动态规划)