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版本