[动画leetcode高频面试之数组系列之栈队列]1 栈实现队列

225 阅读2分钟

这是我的面试经历以及整理的相关面试高频题目,希望对大家有帮助。面试集锦

老规矩,不白嫖,点赞再看!

因为小蓝当时很想去做短视频的互联网公司,无奈学校当地鲜有相关公司来校招,所以就跋涉去了湖大,当天晚上参加了现场笔试,半夜收到第二天复试通知,二面中面试官就让手撕用栈实现队列

在这里插入图片描述
在此大家可以先思考1分钟 顺便复习下 栈和队列 再看题解效果会更好哈

  • 栈是一种先进后出的数据结构。栈中的元素从栈顶(top)压入(push),从栈顶弹出(top)。注意:压入我们需要判栈是否已满,弹出需要判栈是否已空。下面我们看看图加深下印象。

    在这里插入图片描述
    在这里插入图片描述
    入栈 1 2 3 出栈 3 2 1

  • 队列

    队列是一种先进先出的数据结构。队列中的元素从队尾(rear)入队(push),从队头(front)出队(pop).同样,我们用图的方式来加深印象。

    在这里插入图片描述
    在这里插入图片描述
    入队列 1 2 3 出队列 1 2 3

一 题目

使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。

示例

示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2);
queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false

1 leetcode连接

原题连接

2 题目解析

  • 相信大家已经知道了栈是先进后出,队列是先进先出。假设1 2 3进栈,第一次出栈为3 2 1(反了一次),但是我们想要的出来的顺序为1 2 3,那么我们在此基础再反一次。
    在这里插入图片描述
  • ok,其实我们需要引入另一栈来辅助我们完成,如下图。
    在这里插入图片描述

3 动画演示

不好意思哈,因为支持视频只支持b站,腾讯视频,可是我还没上传,我就放我公众号的外链吧。 动画演示

3 代码实现

  • c++版本
    在这里插入图片描述
  • python版本
    在这里插入图片描述
  • java版本
    在这里插入图片描述

4 收尾

系列算法题均采用三种不同的语言实现,满足不同小伙伴的需求。如有不对的地方希望小伙伴指出,感谢!

❤️ 看完三件事:如果您看完有一点点收获,快速迎娶白富美方式:

1 关注公众号「我是程序员小贱」,第一时间阅读最新的文章,公众号后台回复 [小天使] 送你 最新的编程技术资料。

2 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)

3 关注我和专栏,让我们成为好基友。