首页 > 其他分享 >代码随想录第十天| 232.用栈实现队列 |225. 用队列实现栈

代码随想录第十天| 232.用栈实现队列 |225. 用队列实现栈

时间:2023-02-18 20:46:43浏览次数:58  
标签:tmp 第十天 TheFirstStack 队列 随想录 theFisrtQueue pop push TheSecoundStack

因为之前比较忙期末考试=-= 所以断了打卡 现在 重新补起来~!

232.用栈实现队列 

题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/

看到题目的第一想法:因为一刷过,所以知道用两个栈来实现第一个栈用来存储

第二个栈就用来 将第一个栈的存储顺序变为队列的顺序

实现中遇到的困难:在实现pop的时候在想 如果转换到第二个栈之后如果还要添加怎么办

没有想到在删除之后 重新把第二个栈里面的元素放到第一个栈当中.

看到代码随想录之后的想法:进行还原 每一次要输出的时候再转化为队列(移到第二个栈当中)

class MyQueue
{
        stack<int> TheFirstStack;
        stack<int> TheSecoundStack;
public:
    MyQueue()
    {
    }
    void push(int x)
    {
        TheFirstStack.push(x);
    }

    int pop()
    {
        while(!TheFirstStack.empty())
        {
            auto tmp=TheFirstStack.top();
            TheFirstStack.pop();
            TheSecoundStack.push(tmp);
        }
        auto del=TheSecoundStack.top();
        TheSecoundStack.pop();
        while(!TheSecoundStack.empty())
        {
            auto tmp=TheSecoundStack.top();
            TheSecoundStack.pop();
            TheFirstStack.push(tmp);
        }
        return del;
    }

    int peek()
    {
        while(!TheFirstStack.empty())
        {
            auto tmp=TheFirstStack.top();
            TheFirstStack.pop();
            TheSecoundStack.push(tmp);
        }
        auto tmp=TheSecoundStack.top();
        while(!TheSecoundStack.empty())
        {
            auto tmp=TheSecoundStack.top();
            TheSecoundStack.pop();
            TheFirstStack.push(tmp);
        }
        return tmp;
    }

    bool empty()
    {
        if(TheFirstStack.empty())
        {
            return true;
        }
        return false;
    }
};

 

 

 

225. 用队列实现栈

题目链接:https://leetcode.cn/problems/implement-stack-using-queues/

看到题目的第一想法:因为一刷过.看到题目是要求使用两个队列,就想到用两个队列

实现中遇到的困难:因为做了第一个题陷入逻辑闭环,不知道怎么去实现

其实就是少循环队列大小一次,然后最后面的那个就是要移除的值.

看到代码随想录之后的想法:明白了如何实现

 1 class MyStack
 2 {
 3 public:
 4     queue<int> theFisrtQueue;
 5     queue<int> theSecoundQueue;
 6     MyStack()
 7     {
 8     }
 9 
10     void push(int x)
11     {
12         theFisrtQueue.push(x);
13     }
14 
15     int pop()
16     {
17         int size = theFisrtQueue.size();
18         size--;
19         while (size--)
20         {
21             auto tmp = theFisrtQueue.front();
22             theFisrtQueue.pop();
23             theSecoundQueue.push(tmp);
24         }
25         int result = theFisrtQueue.front();
26         theFisrtQueue.pop();
27         while (!theSecoundQueue.empty())
28         {
29             auto tmp = theSecoundQueue.front();
30             theSecoundQueue.pop();
31             theFisrtQueue.push(tmp);
32         }
33         return result;
34     }
35 
36     int top()
37     {
38         auto top=theFisrtQueue.back();
39         return top;
40 
41     }
42 
43     bool empty()
44     {
45         if (theFisrtQueue.empty())
46         {
47             return true;
48         }
49         return false;
50     }
51 };

 

用了不到一个小时,加油补上吧,虽然真的很累...

标签:tmp,第十天,TheFirstStack,队列,随想录,theFisrtQueue,pop,push,TheSecoundStack
From: https://www.cnblogs.com/Liebelingszouxiang/p/17133516.html

相关文章

  • 代码随想录算法训练营 第三天 | 203.移除链表元素 707.设计链表 206.反转链表
    移除链表元素1,双指针pre和cur(如果cur.val等于target pre.next=cur.next)2,虚拟头结点可以保证头结点的处理方式也一致设计链表1,注意审题 ......
  • 代码随想录算法训练营Day18 二叉树
    代码随想录算法训练营代码随想录算法训练营Day18二叉树|513.找树左下角的值112.路径总和113.路径总和ii106.从中序与后序遍历序列构造二叉树105.从前序与中序遍历......
  • 【LeeCode】406. 根据身高重建队列
    【题目描述】假设有打乱顺序的一群人站成一个队列,数组 ​​people​​​ 表示队列中一些人的属性(不一定按顺序)。每个 ​​people[i]=[hi,ki]​​​ 表示第 ​​i​......
  • PHP与RabbitMQ消息队列简单示例
    ​​RabbitMQ​​提供跨语言接口,我们可以使用主流编程语言Java,C,C++,Python,PHP等和RabbitMQ做对接。RabbitMQ有消息确认机制、灵活的路由控制、以及消息集群高可用,使得很多大......
  • 消息队列非阻塞
    消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX1003.1b在信号的实时性方面作了拓广,使......
  • 单调队列
    单调队列是什么呢?可以直接从问题开始来展开。Poj2823给定一个数列,从左至右输出每个长度为m的数列段内的最小数和最大数。数列长度:N<=106,m<=N暴力解很直观的一种解法,那就......
  • 堆-- 神奇的优先队列
    堆是什么?是一种特殊的完全二叉树,就像树一样。有没有发现这棵二叉树有一个特点?就是所有的父节点都比子节点小(PS:就是圆圈的数值,圆圈外面的编号是这个节点的编号,)那么符合这样......
  • 【LeetCode栈与队列#06】前K个高频元素,以及pair、priority_queue的使用
    前K个高频元素力扣题目链接(opensnewwindow)给定一个非空的整数数组,返回其中出现频率前k高的元素。示例1:输入:nums=[1,1,1,2,2,3],k=2输出:[1,2]示......
  • 肖sir__面试第十天课程__模拟面试讲解
    模拟面试一、面对面模拟面试1、打印好简历2、带好手机,录制自己回答的问题,总结,反思3、可以携带电4、可以携带耳塞(适合女生)5、语速流程6、礼貌用语(面试官好,结束语:谢谢......
  • 代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机II,55. 跳跃游戏,45.跳跃游戏
    一、参考资料买卖股票的最佳时机IIhttps://programmercarl.com/0122.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAII.html......