day10

  • python栈的实现
  • Python栈所需要的包
  • 232. 用栈实现队列
    • 思路
    • solution
    • ??
  • 225. 用队列实现栈
    • 思路
    • solution

python栈的实现

Python中现成的栈就是列表List。
栈是一个特殊的有序列表,其插入和删除操作都在一端(栈顶)进行。
如果把列表的尾部看作栈顶
List.append()=push到栈顶
List.pop()=pop栈顶元素

Python栈所需要的包

from pythonds.basic.stack import Stack

232. 用栈实现队列

思路

不要按照代码随想录的那个图!要晕!!
stack_in=[]:


|_____________
stack_out=[]:


|_____________
把in的元素一个一个pop()并append()到out里,这样out数组直接pop就能完成pop()函数部分

solution

class MyQueue:# list的append()向列表的末尾添加元素# list的pop()用于移除列表中的一个元素(默认最后一个元素,即-1),并且返回该元素的值# list的del()删除某一个index的元素def __init__(self):self.stack_in=[]self.stack_out=[]def push(self, x: int) -> None:self.stack_in.append(x)def pop(self) -> int:if self.empty()==True:return Noneif len(self.stack_out)!=0:return self.stack_out.pop() # 与list有关的函数else:#out为空#只有当out不为空的时候才能直接pop(即不能往里加新的值)#for i in (self.stack_in):for i in range(len(self.stack_in)):self.stack_out.append(self.stack_in.pop())return self.stack_out.pop()def peek(self) -> int:#这里有问题 如果in等于空的话 应该用out去取#return self.stack_in[len(self.stack_in)-1]ans=self.pop()self.stack_out.append(ans)#因为pop肯定是从out出来的return ansdef empty(self) -> bool:# 只有in和out都为空才说明队列为空if len(self.stack_in)==0 and len(self.stack_out)==0:return Truereturn False# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()

??

pop()中的这两个:
#for i in (self.stack_in):
for i in range(len(self.stack_in)):
为什么第一个不对!!!!!???????
因为第一个中stack_in每次都在遍历过程中被动态修改了,但是len()只传一次,没有被修改。

225. 用队列实现栈

思路

如果对于元素1,2,3这个顺序进入栈
栈:从栈顶(出口)到栈底:3,2,1
出来一个元素结果首先是3
队列:队头(出口)到队尾(入口):1,2,3
出来一个元素结果首先是1

solution

class MyStack:def __init__(self):self.stack=[] #模拟一个队列def push(self, x: int) -> None:self.stack.append(x)def pop(self) -> int:if self.empty==True:return Nonefor i in range(len(self.stack)-1):ans=self.stack.pop(0)self.stack.append(ans)return self.stack.pop(0)def top(self) -> int:ans=self.pop()self.stack.append(ans)return ansdef empty(self) -> bool:if len(self.stack)==0:return Trueelse:return False# 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()

Suzy找到实习了吗Day 10 | 栈和队列开始啦:232. 用栈实现队列,225. 用队列实现栈相关推荐

  1. Suzy找到实习了吗 Day 1 | 704. 二分查找、27. 移除元素

    Suzy找到实习了吗 | 704. 二分查找.27. 移除元素 Leetcode 704:二分搜索 收获 Divide and conquer Recursive relation Python 3 ...

  2. Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素

    day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...

  3. Suzy找到实习了吗Day 11 |栈与队列中途 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    Day 11 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 20. 有效的括号 注意栈不是一个数据结构,需要自己用list实现栈的逻辑 class Solu ...

  4. Suzy找到实习了吗Day 14 | 二叉树开始啦 二叉树的分类、定义、遍历方法

    二叉树的种类 满二叉树 一棵二叉树只有度为0和结点和度为2的结点--每一层都是满的,深度为k的二叉树,有2^k-1个节点的二叉树 完全二叉树 在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数 ...

  5. Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串

    39. 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , ...

  6. Suzy找到实习了吗Day 8 | 字符串开始啦 344. 反转字符串,541. 反转字符串 II,剑指 Offer 05. 替换空格,151. 反转字符串中的单词,左旋转字符串

    这里是目录 344. 反转字符串 题目 Solution 541. 反转字符串 II 题目 Solution(v1) Solution(v2) 剑指 Offer 05. 替换空格 做题记录 151. ...

  7. Suzy找到实习了吗Day25 | 回溯算法进行时:216. 组合总和 III,17电话号码

    216. 组合总和 III 题目 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 .该列表不能包含相同的组合两次 ...

  8. Suzy找到实习了吗 Day 21 | 二叉树进行中:530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先

    530. 二叉搜索树的最小绝对差 题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 .差值是一个正数,其数值等于两值之差的绝对值. solution # Defi ...

  9. Suzy找到实习了吗Day 3 | 链表开始啦 203移除链表元素 707设计链表 206 反转链表

    定义链表的结构 class ListNode:def __init__(self, val, next=None): #构造函数self.val = valself.next = next 尾部nod ...

最新文章

  1. 打造完美的JS树形菜单
  2. java项目配置常见问题
  3. Win10小技巧:如何将在此处打开命令改为CMD或Powershell?
  4. nginx代理人server结合tomcat采用
  5. 深度学习:在图像上找到手势_使用深度学习的人类情绪和手势检测器:第2部分
  6. 服务的协作:服务间的消息传递——《微服务设计》读书笔记
  7. 一张图解决项目常见乱码问题
  8. 一台电脑,内外网同时使用
  9. Windows 创建 Redis 和 zookeeper 系统服务
  10. this.$router.push相关的vue-router的导航方法
  11. 如何简单描述java中的代理模式
  12. 2023计算机毕业设计SSM最新选题之javaAI学院教务信息管理系统lx9v9
  13. 追忆信息论之父-香农博士
  14. 信息流广告文案与创意设计
  15. SE(3)和se(3),左扰动模型
  16. Layer Tree 绘制
  17. Spring声明式事物配置管理
  18. MP6050使用DMP库获取计步数
  19. java pkcs7_使用PKCS#7进行加密解密
  20. 【Java】轻松掌握栈的基本操作

热门文章

  1. 微信响应菜单点击事件php,微信开发实现各种消息的响应
  2. 被各种注解搞晕了?那快来看看Spring Bean注解详解!
  3. springboot 模块引用_Spring Boot(三):SpringBoot多模块(module)项目搭建
  4. 婚宴座位图html5,婚礼酒席座位该怎么安排好?婚宴座位安排图解
  5. 百问网物联网实战-STM32中断
  6. 度度熊与邪恶大魔王 (百度之星之资格赛)
  7. 使用BlueZ连接蓝牙手柄
  8. 地方两会前瞻布局 谋定·经信研究-李刚:各地元宇宙虚实融合
  9. 基于行为模拟爆破C/S架构客户端程序的一些猜想实现
  10. 5.20,福利一波,用文字拼一个自己最爱的人