力扣232.用栈实现队列和225.用队列实现栈,在2024年3/3和3/4连续两天出现,正好也回顾一下数据结构,前一年我一直在学习Godot游戏开发和美术,原来的C++老本行都要忘了,最近一段时间才重操旧业,还是先从简单做起。
这两题都是非常经典的数据结构题,属于简单题,我这里也就给出比较常见的方法。
先看两道题目如下:
第一个题目,用栈实现队列,就是要用两个具有先进后出特性的stack来实现一个先进先出特性的queue,我的思路其实就是把两个stack来回倒腾一遍,因为每次pop()或是peek()都是要获得栈底的元素,那我把stack1的元素按先进后出的规则移动到stack2时,此时stack2的元素顺序和stack1时相反的,此时原来stack1栈底的元素转移到了stack2的栈顶,此时就能够获取到了。
class MyQueue {
public:
stack<int>stack1;
stack<int>stack2;
MyQueue() {
}
void push(int x) {
stack1.push(x);
}
int pop() {
while(!stack1.empty()){
stack2.push(stack1.top());