首页 > 其他分享 >数据结构 栈 / 队列(第9天)

数据结构 栈 / 队列(第9天)

时间:2022-10-29 11:36:32浏览次数:59  
标签:return 队列 self pop 数据结构 stackout stackin def


20. 有效的括号

判断输入的括号是否有效。
左右括号··能闭合,顺序合适。

思路:用栈实现。遇到左括号就保存在栈中,遇到右括号则需要从栈中弹出一个括号,与之配对。

class Solution:
def isValid(self, s: str) -> bool:
stack = []
pairs = {
'(' : ')',
'[' : ']',
'{' : '}'
}
for c in s:
if c in pairs.keys() :
stack.append(c)
else:
if len(stack) == 0:
return False
left = stack.pop()
if c != pairs.get(left) :
return False
return len(stack) == 0

232. 用栈实现队列

用栈实现队列(先进先出)。
思路:
栈是先进后出的,所以用一个栈显然无法实现。
用两个栈,一个栈​​​stackin​​​用来保存进来的元素,一个栈​​stackout​​​用来输出元素。
输入元素时,添加到​​​stackin​​​,输出元素时,将​​stackin​​​的所有元素添加到​​stackout​​​,再从​​stackout​​​输出。
这样相当于负负得正。

class MyQueue:

def __init__(self):
self.stackin = []
self.stackout = []


def push(self, x: int) -> None:
self.stackin.append(x)


def pop(self) -> int:
if self.empty():
return None
if not self.stackout:
while self.stackin:
self.stackout.append(self.stackin.pop())
return self.stackout.pop()


def peek(self) -> int:
res = self.pop()
self.stackout.append(res)
return res


def empty(self) -> bool:
return not (self.stackin or self.stackout)


标签:return,队列,self,pop,数据结构,stackout,stackin,def
From: https://blog.51cto.com/pigeon/5805834

相关文章

  • 数据结构 链表(第7、8天)
    链表这里面的链表题比较简单,只要会遍历链表、删除链表节点、反转链表这些基本操作就行。必要时可以画图辅助理解。141.环形链表给定一个链表,判断是否有环。思路:快慢指针。......
  • 数据结构模板整合
    栈#include<iostream>#include<cstdio>#definemaxn100010usingnamespacestd;intn,x;template<typenametype>inlinevoidread(type&x){x=0;boolfl......
  • 基于C语言的通用型数据结构与容器库
    仓库地址:github:https://github.com/hellototoro/hlibcgitee:https://gitee.com/totorohello/hlibclist双向序列容器,用于将它们的元素保持为线性排列,并允许在序列的任何......
  • 数据结构 玩转数据结构 4-3 使用链表的虚拟头结点
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13446 1重点关注1.1代码草图解析 1.2为何为链表头设立虚拟头节点为......
  • 数据结构整理笔记(未完)
    链表本质上是一个结构体指向下一个结构体,第一个结构体为链头,重点是指向下一个(next)结构体代码实现创建链表structElement//链表元素{char*nam......
  • 【BZOJ4504】K个串(优先队列,可持久化线段树)
    Description兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)。......
  • 数据结构 玩转数据结构 4-2 在链表中添加元素
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13430 1重点关注1.1链表插值动画模拟(可以理解为火车尾加车厢,只不过是火车尾被称......
  • Rdis 基本数据结构
    首先介绍redis底层实际存储数据的八种数据类型:一、简单的动态字符串(SDS)定义结构:structsdshdr{    intlen;  //记录buf数组使用的字节数量,也等于SDS保存字符......
  • Java-五种线程池,四种拒绝策略,三类阻塞队列
    Java-五种线程池,四种拒绝策略,三类阻塞队列(常用)三类阻塞队列:   //1有界队列   workQueue=newArrayBlockingQueue<>(5);//基于数组的先进先出(FIFO)队列,支持公......
  • java-并发集合-阻塞队列 LinkedBlockingQueue 演示
    java-并发集合-阻塞队列LinkedBlockingQueue演示packageme.grass.demo.concuronte;importjava.util.Date;importjava.util.concurrent.CountDow......