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

网友投稿 227 2022-10-18


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

1二面记录

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

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

顺便复习下

栈和队列

再看题解效果会更好哈

栈的特点

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

入栈 1 2 3

出栈 3 2 1

队列的特点

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

入队列 1 2 3

出队列 1 2 3

1Leetcode232 用栈实现队列

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

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,其实我们需要引入另一栈来辅助我们完成,如下图。

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

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

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

03代码实现1c++版本

2python版本

3java版本


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[leetcode数组系列]5 数组中的K-diff数对
下一篇:Apache Dubbo的SPI机制是如何实现的
相关文章

 发表评论

暂时没有评论,来抢沙发吧~