前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[leetcode栈队列]1 栈实现队列

[leetcode栈队列]1 栈实现队列

作者头像
我是程序员小贱
发布2020-06-05 14:41:13
4430
发布2020-06-05 14:41:13
举报
文章被收录于专栏:面试经验贴面试经验贴

1 二面记录

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

在此大家可以先思考1分钟

顺便复习下

栈和队列

再看题解效果会更好哈

栈的特点

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

入栈 1 2 3

出栈 3 2 1

队列的特点

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

入队列 1 2 3

出队列 1 2 3

1

Leetcode232 用栈实现队列

使用栈实现队列的下列操作:

push(x) -- 将一个元素放入队列的尾部。

pop() -- 从队列首部移除元素。

peek() -- 返回队列首部的元素。

empty() -- 返回队列是否为空。

示例:

MyQueue queue = new MyQueue();

queue.push(1);

queue.push(2);

queue.peek(); // 返回 1

queue.pop(); // 返回 1

queue.empty(); // 返回 false

01 题目解析

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

02 动画演示

好了,到这里总结下实现思路及注意事项:

  • 使用两个栈,元素先进入A栈,然后从B栈出。
  • 在pop()和peek的时候需要注意:
    • 如果B栈有元素,直接从B栈弹出。
    • 如果B栈没有元素,将A栈元素压入B栈。

题目虽简单,细品出真理!一定掌握哈!

03

代码实现

1 c++版本

2 python版本

3 java版本

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我是程序员小贱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 二面记录
  • 01 题目解析
  • 02 动画演示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档