首页 > 编程语言 >代码随想录算法训练营第十天 | 栈与队列理论基础,232.用栈实现队列,225.用队列实现栈

代码随想录算法训练营第十天 | 栈与队列理论基础,232.用栈实现队列,225.用队列实现栈

时间:2023-12-22 20:23:29浏览次数:51  
标签:第十天 队列 复杂度 随想录 实现 用栈 225 232

一、栈与队列理论基础

学习:

1. 定义

  • 栈先进后出
  • 队列先进先出

2. 底层实现
均可以通过数组或链表进行实现

二、232.用栈实现队列

题目链接:

LeetCode 232.用栈实现队列

学习前:

思路:

学习后:

  • 不同方法有部分功能实现是一致的,则可以进行抽象提取,实现复用性
  • 两个栈实现队列

时间复杂度:入队为O(1),队首元素和出队为O(n)

空间复杂度:O(1)

三、225.用队列实现栈

题目链接:

LeetCode 225.用队列实现栈

学习前:

思路:

用两个队列实现一个栈,每次把length-1个元素放入队列二,队列1用于pop,peek,push

时间复杂度:插入为O(1),栈顶元素和出栈为O(n)

空间复杂度:O(1)

学习后:

用一个队列实现一个栈,通过不断地pop和push,使得最后一个元素变成入队元素

四、学习总结

  1. 时间:3h
  2. 学会自己写一个栈和队列数据结构的实现类

标签:第十天,队列,复杂度,随想录,实现,用栈,225,232
From: https://www.cnblogs.com/amulet/p/17922300.html

相关文章

  • 队列
    机器翻译(洛谷P1540)题目大意有m个可存放单词和译意的单元,初始内容为空,依次读取文章单词,若在内存单元中不存在则从外存读入,载入内存,若内存数据超过m则最先录入内存单元的出队,直到文章全部翻译完,求外存查找次数。解题思路限定了队列容量为m,每当队列中找不到匹配单词时从外存载......
  • 消息队列(一)
    消息队列是做什么的?消息队列(MessageQueue,简称MQ)是一种在消息的传输过程中保存消息的容器。它是一种跨进程或线程间通信的方式,常用于不同进程或线程间异步处理数据。消息队列利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。消息队列一......
  • 代码随想录算法训练营第六天|454.四数相加二、383.赎金信、15.三数之和、18.四数之和
    LeetCode454.四数相加二题目链接:454.四数相加二提示:统计出现的次数; 采用map,key存值,value存次数!!! LeetCode383.赎金信题目链接:383.赎金信提示:字符串.length()可以直接求出字符串的长度,字符串.toCharArray()返回字符串对应的char数组 LeetCode15.三......
  • 代码随想录算法训练营第八天 | 344.反转字符串,541.反转字符串II,卡码网:54.替换数字,151.
    一、344.反转字符串题目链接:LeetCode344.反转字符串学习前:思路:相向指针。left=0,right=length-1,不停交换left和right的值时间复杂度:O(n)空间复杂度:O(1)学习后:了解swap函数通过位运算实现的方式二、541.反转字符串II题目链接:LeetCode541.反转字符串II学习前:思路:ne......
  • 队列
    1.队列概念及结构队列一种先进先出的数据结构,先入队列的数据先出队列单链表能实现队列?所以以原来的单链表无法用来实现队列,如何修改?只需再加个last引用指向尾,这样尾插入队操作复杂度就能达到O(1)但是需要注意:这种结构的单链表只能头插实现出队尾插实现入队,不......
  • 等待队列
    等待队列什么是等待队列等待队列是内核实现阻塞和唤醒的内核机制。等待队列以循环链表为基础结构,链表头和链表项分别为等待队列头和等待队列元素。整个等待队列由等待队列头进行管理。等待队列头使用结构体wait_queue_head_t来表示,等待队列头就是一个等待队列的头部,这个结构......
  • 代码随想录算法训练营第七天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和
    一、454.四数相加II题目链接:LeetCode454.四数相加II学习前:思路:首先定义两个HashMap对象record12和record34,对应的key存放两个数组元素的和,value存放计算的和出现的次数接着遍历record12,若record存在与之和为0的元素,则计算两个value相乘的结果,并进行累积,作为输出的结果......
  • Netty使用CompletableFuture实现异步串行队列
    一、前言CompletableFuture是JDK1.8提供的一种更加强大的异步编程的api。它实现了Future接口,也就是Future的功能特性CompletableFuture也有。它也实现了CompletionStage接口,CompletionStage接口定义了任务编排的方法,执行某一阶段,可以向下执行后续阶段。CompletableFuture相比于Futu......
  • 代码随想录--字符串
    344.反转字符串https://leetcode.cn/problems/reverse-string/classSolution{public:voidreverseString(vector<char>&s){intsize=s.size();for(intj=size-1,i=0;i<size/2;j--,i++){swap(s[i],......
  • 数据结构 —— 线性表、栈、队列
    一、算法复杂度 【2011】设n是描述问题规模的非负整数,下面的程序片段时间复杂度是()x=2;while(x<n/2)x=2*x;AO(log2(n))  BO(n) CO(nlog2(n)) DO(n^2) 答案:A解析:x=2^i=n/2i=log2(n/2) 【2012】求整数n(n>=0)的阶乘的算法......