代码随想录算法训练营第十天(字符串)| 232.用栈实现队列,225. 用队列实现栈

代码随想录算法训练营第九天(字符串)| 232.用栈实现队列,225. 用队列实现栈

232. 用栈实现队列

大家可以先看视频,了解一下模拟的过程,然后写代码会轻松很多。

题目链接/文章讲解/视频讲解:
在这里插入图片描述

看到题目的第一想法:

一个栈负责进栈,一个栈负责出栈

package com.second.day10;

import java.util.Stack;

public class MyQueue {
    Stack<Integer> stackIn;
    Stack<Integer> stackOut;

    public MyQueue() {
        stackIn = new Stack<>();   //负责进栈
        stackOut = new Stack<>();  //负责出栈
    }

    public void push(int x) {
        stackIn.push(x);
    }

    public int pop() {
        if(stackOut.isEmpty()) {
            while(!stackIn.isEmpty()) {
                stackOut.push(stackIn.pop());
            }
        }
        int pop = stackOut.pop();
        return pop;
    }

    public int peek() {
        if(stackOut.isEmpty()) {
            while(!stackIn.isEmpty()) {
                stackOut.push(stackIn.pop());
            }
        }
        int peek = stackOut.peek();
        return peek;
    }

    public boolean empty() {
        if(stackIn.isEmpty() && stackOut.isEmpty())
            return true;
        return false;

    }
}

看完代码随想录之后的想法:

pop函数和peek函数有代码重复部分,可以进行代码精简。

自己实现过程中遇到哪些困难:

225. 用队列实现栈

可以大家惯性思维,以为还要两个队列来模拟栈,其实只用一个队列就可以模拟栈了。

建议大家掌握一个队列的方法,更简单一些,可以先看视频讲解

题目链接/文章讲解/视频讲解:
在这里插入图片描述

看到题目的第一想法:

一个队列负责入,一个队列负责暂存

package com.second.day10;

import java.util.LinkedList;
import java.util.Queue;

public class MyStack {
    Queue<Integer> queueIn;
    Queue<Integer> queueOut;

    public MyStack() {
        queueIn = new LinkedList<>();
        queueOut = new LinkedList<>();
    }

    public void push(int x) {
        queueIn.offer(x);
    }

    public int pop() {
        remove();
        int pop = queueIn.poll();
        return pop;
    }

    public int top() {
        remove();
        int top = queueIn.peek();
        return top;
    }

    public boolean empty() {
        if(queueIn.isEmpty() && queueOut.isEmpty()) {
            return true;
        }
        return false;
    }
    //使queueIn只剩下一个元素
    public void remove() {
        if(queueIn.isEmpty()) {
            while(!queueOut.isEmpty()) {
                queueIn.offer(queueOut.poll());
            }
        }
        int size = queueIn.size();
        while(size > 1) {
            queueOut.offer(queueIn.poll());
            size--;
        }
    }
}

看完代码随想录之后的想法:

代码一样,真的厉害。

自己实现过程中遇到哪些困难:

今日收获,记录一下自己的学习时长:

今天的还算简单,一下子就写完了。
今天写了二个题: 232.用栈实现队列,225. 用队列实现栈
代码:1h
博客:30min
每一个成功者都有一个开始。勇于开始,才能找到成功的路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是nefu小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值