【力扣刷题 | 第七天】

news2024/12/26 9:17:43

前言: 

今天我们将会进入栈与队列的刷题篇章,二者都是经典的数据结构,熟练的掌握栈与队列实现可以巧妙的解决有些问题。

232. 用栈实现队列 - 力扣(LeetCode) 

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):

实现 MyQueue 类:

void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false
说明:

你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

解法

class MyQueue {
public:
    stack<int> d1;
    stack<int> d2;
    MyQueue() {

    }

    void push(int x) {
        d1.push(x);
    }

    int pop() {
        if (d2.empty()) {
            while (!d1.empty()) {
                d2.push(d1.top());
                d1.pop();
            }
        }

        int result = d2.top();
        d2.pop();
        return result;
    }

    int peek() {
        int res = this->pop();
        d2.push(res);
        return res;
    }

    bool empty() {
        return d1.empty() && d2.empty();
    }
};

225. 用队列实现栈 - 力扣(LeetCode)

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。

实现 MyStack 类:

void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
 

注意:

你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。
你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

 

class MyStack {
public:
    queue<int> que1;
    queue<int> que2; 
  
    MyStack() {

    }

  
    void push(int x) {
        que1.push(x);
    }

    
    int pop() {
        int size = que1.size();
        size--;
        while (size--) { 
            que2.push(que1.front());
            que1.pop();
        }

        int result = que1.front(); 
        que1.pop();
        que1 = que2;           
        while (!que2.empty()) { 
            que2.pop();
        }
        return result;
    }


    int top() {
        return que1.back();
    }

    bool empty() {
        return que1.empty();
    }
};

总结:

  实际应用中,栈和队列都是很常见的数据结构,我们要熟练的掌握这两个结构的各种性质,这样才能够达到实际要求。

今天的内容到这里就结束了,感谢大家的阅读。

如果我的内容对你有帮助,请点赞,评论,收藏创作不易,大家的支持就是我坚持下去的动力!

        

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

野火Renesas R4M2 UDS诊断bootloader 升级MCU

基于can总线的UDS软件升级 最近学习UDS诊断协议&#xff08;ISO14229&#xff09;&#xff0c;是一项国际标准&#xff0c;为汽车电子系统中的诊断通信定义了统一的协议和服务。它规定了与诊断相关的服务需求&#xff0c;并没有设计通信机制。ISO14229仅对应用层和会话层做出了…

从零开始Vue项目中使用MapboxGL开发三维地图教程(一)MapboxGL介绍以及前期vue项目的搭建

MapboxGL介绍以及前期vue项目的搭建 1、Mapbox-gl简介2、搭建vue项目2.1、创建vue项目2.2、注册mapbox官网2.3、mapbox-gl入门案例 3、Mapbox-gl地图主要配置参数说明 1、Mapbox-gl简介 Mapbox-gl是一个开源、基于webgl技术的前端地图类库。 地图数据渲染和可视化这块我们经常用…

chatgpt赋能python:如何培训Python?-从入门到专业化

如何培训Python&#xff1f;- 从入门到专业化 Python是一种高级编程语言&#xff0c;已被广泛应用于各种领域以及各种应用程序的开发中。如果你也想成为一名Python开发人员&#xff0c;有以下几种培训方法帮助你一步步实现你的目标。 1.自学Python 学习Python的最简单方法是…

【前端 - CSS】第 13 课 - CSS 应用案例 - 体育新闻

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、示例代码 3、总结 1、缘起 最近学习完了 CSS 的 引入方式、选择器 和 字体修饰属性 的相关知识点&#xff0c;然后运…

redis(一),redis简介,Linux下安装及基本配置

一.redis简介&#xff1a; 1.什么是redis Redis 是完全开源的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的 key-value 数据库。它属于NoSQL数据库。 2.NoSQL简介&#xff1a; NoSQL有两种说法&#xff0c;一般指的是非关系型数据库&#xff0c;另一种说法是说它是“…

xml parser - etree

import xml.etree.ElementTree as ET# https://docs.python.org/3/library/xml.etree.elementtree.html # https://zhuanlan.zhihu.com/p/502584681def main():tree ET.parse(./country_data.xml)# 获取根元素root tree.getroot()print("{} {}".format(type(root),…

chatgpt赋能python:Python3.7安装指南

Python 3.7 安装指南 Python是一种高级编程语言&#xff0c;被广泛应用于Web开发、数据科学、人工智能等领域。而最新版本的Python 3.7则提供了更加稳定、更加高效的开发环境。这篇文章将介绍如何在不同的操作系统中安装Python 3.7。 Windows系统安装 Python 3.7 在Windows系…

chatgpt赋能python:安装Platform模块——让Python更好用

安装Platform模块——让Python更好用 Python是一种跨平台的编程语言&#xff0c;可以在不同操作系统上使用。作为Python的一个标准模块&#xff0c;Platform模块可以帮助开发者轻松获取有关操作系统及其特征的信息。这篇文章将介绍如何安装Platform模块&#xff0c;并提供一些…

cxGrid自动保存当前单元格输入的数据

遇到的问题&#xff0c;利用cxGrid做数据录入界面&#xff0c;当用户在一个单元格中录入数据&#xff0c;没有回车&#xff0c;然后直接点工具条上的保存按钮&#xff0c;执行数据提交&#xff0c;结果当前输入的内容丢掉了&#xff0c;又回到输入前的值。 在群中求助&#xf…

axios实战进阶练习——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台

文章目录 &#x1f4cb;前言&#x1f3af;demo 介绍&#x1f3af;后端与接口的调试&#x1f9e9;关于运行后端项目&#x1f9e9;关于接口的调试 &#x1f3af;功能分析&#x1f9e9;数据的展示与分页功能&#x1f9e9;添加功能&#x1f9e9;编辑功能&#x1f9e9;删除功能 &…

大话Stable-Diffusion-Webui-动手开发一个简单的stable-diffusion-webui(一)

文章目录 写在前面整体效果开发所需环境开发工具需要具备的知识Node安装更改npm包安装的目录设置npm镜像vscode安装创建vue项目代码编写项目先体验注意写在前面 stable-diffusion-webui(以下简称sd)项目通过FastAPI对外提供了一系列的api用于开发者二次开发或者集成到自己的…

真正理解微软Windows程序运行机制——窗口机制(第三部分)

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天说说Windows程序的运行机制。经常被问到MFC到底是一个什么技术&#xff0c;为了解释这个我之前还写过帖子&#xff0c;但是很多人还是不理解。其实这没什么&#xff0c;我在学生时代也被这个问题困绕过。…

帆软报表二次开发 树组件节点上添加自己的按钮

我这里的需求是在树组件的子节点上加一个复制按钮。 先看效果 这是一颗多选树,用的是bi.tree_value_chooser_pane 这个组件,这个组件默认支持多选,它默认的效果为: 这个组件没有提供机制来自定义节点的渲染。 通过查找源码发现这个组件内部构建树是通过BI.$.fn.zTree来构…

C语言进阶---数据的存储

1、整形存储和大小端 本章重点&#xff1a; 1、数据类型详细介绍 2、整型在内存中的存储&#xff1a;原码、反码、补码 3、大小端字节序介绍及判断 4、浮点型在内存中的存储解析 1.1、数据类型介绍 char 1byte //字符数据类型 short 2byte //…

【MyBatis】3、一文介绍如何用 MyBatis 进行多表级联查询

目录 一、设置新插入记录的主键&#xff08;id&#xff09;到参数对象中二、PageHelper 分页插件三、多表关系四、一对一五、一对多六、多对多 一、设置新插入记录的主键&#xff08;id&#xff09;到参数对象中 <insert id"insert01" parameterType"Studen…

【二叉树---堆】

二叉树---堆 一、树的概念及结构1. 树的概念2.树的相关概念3.树的表示 二、二叉树1.二叉树的概念2.特殊的二叉树3.二叉树的性质 三、堆1.堆的概念及结构2.堆的实现&#xff08;1&#xff09;函数的声明&#xff08;2&#xff09;函数的实现&#xff08;3&#xff09;测试堆的基…

chatgpt赋能python:Python多次运行的优势及方法

Python多次运行的优势及方法 随着Python在计算机领域的广泛应用&#xff0c;越来越多的企业和个人开始使用Python进行编程。在Python编程中&#xff0c;多次运行同一份代码不仅是常见的需求&#xff0c;而且有着众多的优势。 Python多次运行的优势 调试 在编程过程中&#…

chatgpt赋能python:Python安装EGG——一个简单的指南

Python安装EGG——一个简单的指南 如果你使用Python有一段时间了&#xff0c;你可能会遇到需要安装扩展包&#xff08;Package&#xff09;的情况。在Python中&#xff0c;这些扩展包的文件格式通常是.egg&#xff08;Easy Installable GZip&#xff09;。在本文中&#xff0c…

chatgpt赋能python:Python如何安装CSV模块

Python如何安装CSV模块 CSV是一种广泛使用的文件格式&#xff0c;用于存储表格数据。Python已经内置了CSV模块&#xff0c;可以轻松地读取和写入CSV文件。在这篇文章中&#xff0c;我们将关注如何安装CSV模块并开始与CSV文件进行交互。 什么是CSV&#xff1f; CSV是Comma Se…