【LeetCode】剑指 Offer(3)

news2024/12/27 4:07:23

目录

写在前面:

题目:剑指 Offer 09. 用两个栈实现队列 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


写在前面:

每日一题真的是难,反正我是搞不定了,开摆。

另外,我最近要军训两周,也不知道能不能坚持每天更新了,

我现在是拿我休息的时间码文了........好累。

题目:剑指 Offer 09. 用两个栈实现队列 - 力扣(Leetcode)

题目的接口:

class CQueue {
public:
    CQueue() {

    }
    
    void appendTail(int value) {

    }
    
    int deleteHead() {

    }
};

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */

解题思路:

建两个栈,

一个用来接受队列尾插的值,

一个用来充当队列的头删。

当队列需要进行头删的时候,

将原本接收队列尾插值的那个栈的元素放到另一个栈中,

这样就实现了队列头位于第二个栈的栈顶位置。

之后再进行出栈就是队列的头删了。

代码:

class CQueue {
public:
    //建两个栈
    stack<int> push_st;
    stack<int> del_st;
    CQueue() {

    }
    
    void appendTail(int value) {
        //直接存放值进栈里
        push_st.push(value);
    }
    
    int deleteHead() {
        //如果队列为空,返回-1
        if(push_st.empty() && del_st.empty())
        {
            return -1;
        }
        int tmp = 0;

        //如果用来头删的栈里有数据,就直接pop
        if(!del_st.empty())
        {
            tmp = del_st.top();
            del_st.pop();
            return tmp;
        }

        //将所以数据转移到用来删除的栈中
        //这个动作还能将队列第一个存放的数据移到栈顶
        while(!push_st.empty())
        {
            tmp = push_st.top();
            push_st.pop();
            del_st.push(tmp);
        }

        //然后pop再返回即可
        del_st.pop();
        return tmp;
    }
};

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

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

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

相关文章

追光进行时:沿着全光运力的新航道,加速驶向算力时代

2021年&#xff0c;工信部印发《新型数据中心发展三年行动计划&#xff08;2021—2023年&#xff09;》&#xff0c;明确指出“用3年时间&#xff0c;形成总体布局持续优化&#xff0c;全国一体化算力网络国家枢纽节点、省内数据中心、边缘数据中心梯次布局”&#xff0c;“算力…

LeetCode230218_148、654. 最大二叉树

给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 最大二叉树…

页面置换算法

页面置换算法 在进程运行过程中&#xff0c;若需要访问的物理块不在内存中&#xff0c;就需要通过一定的方式来将页面载入内存&#xff0c;而此时内存很可能已无空闲空间&#xff0c;因此就需要一定的算法来选择内存中要被置换的页面&#xff0c;这种算法就被称为页面置换算法…

redis容器部署及相关配置文件解释

背景&#xff1a;我们项目上的redis除了几个核心业务的集群部署是用二进制部署的&#xff0c;其他环境基本都是容器部署。所以整理了一下redis容器相关的配置。docker-compose部署的配置version: 3services:redis:image: redis:6.2.5container_name: redisrestart: alwaysports…

springmvc+jsp电影院购票售票选座推荐网站java ssm

本电影购票推荐网站以SSM作为框架&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;个人中心、用户管理、电影信息管理、电影类型管理、影院信息管理、系统管理、订单管理等模块&#xff0c;通过这些模块的实现能够基本满足日常电影购…

mysql 时区设置

方法一&#xff1a;修改 mysql 的配置文件永久设置时区&#xff08;优点&#xff1a;永久保存设置&#xff0c;缺点&#xff1a;需重启MySQL服务&#xff09;找到你MySQL的安装目录&#xff08;如果不记得安装在哪 可以输入show variables like “%char%”; 查看&#xff09;&a…

第四章SpringBoot之Web开发

文章目录SpringBoot Web开发总览要解决的问题SpringMVC自动配置原理Web开发静态资源处理第一种静态资源处理webjar第二种静态资源映射规则自定义静态资源路径首页处理内容协商视图解析器测试转换器和格式化器修改SpringBoot的默认配置原理分析全面接管SpringMVC关于国际化处理配…

Seata架构篇 - AT模式

AT 模式 概述 Seata AT 模式是一种非侵入式的分布式事务解决方案&#xff0c;Seata 在内部做了对数据库操作的代理层&#xff0c;我们使用 Seata AT 模式时&#xff0c;实际上用的是 Seata 自带的数据源代理 DataSourceProxy&#xff0c;Seata 在这层代理中加入了很多逻辑&am…

Koin入门1-快速上手

概念 Koin 是一款轻量级的依赖注入框架&#xff0c;它无代理&#xff0c;无代码生成&#xff0c;无反射 大家可以自行查阅官方英文教程&#xff1a;https://insert-koin.io/docs/quickstart/android-compose Koin 简单的来说可以包含以下四个模块&#xff1a; 名称作用entity实…

2|数据挖掘|聚类分析|无监督聚类PAM算法(中心法划分)|肠型分析

常见的六大聚类算法https://blog.csdn.net/m0_57656758/article/details/127653402?ops_request_misc%257B%2522request%255Fid%2522%253A%2522167669020916782425666238%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id167669020…

C++ STL——map和set的使用

文章目录1. 关联式容器1.1 键值对1.2 树形结构的关联式容器2. set2.1 set的介绍2.2 set的插入2.3 set的删除和查找2.4 lower_bound和upper_bound3. multiset3.1 count4. map4.1 map的介绍4.2 map的插入4.3 map的遍历4.4 map的[ ]5. multimap1. 关联式容器 我们之前学的vector、…

时序预测 | MATLAB实现CNN-SVM卷积支持向量机时间序列预测

时序预测 | MATLAB实现CNN-SVM卷积支持向量机时间序列预测 目录时序预测 | MATLAB实现CNN-SVM卷积支持向量机时间序列预测预测效果基本介绍研究回顾程序设计参考资料预测效果 基本介绍 CNN-SVM预测模型将深度学习模型作为特征学习器&#xff0c;将SVM 支持向量机 作为训练器进行…

基于分布鲁棒联合机会约束的能源和储备调度(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

2023.2.15工作学习记录 git Docker compose容器编排

关于Git错误提交了target目录 是因为在ignore目录中没有加入biz这个工程 以后提交代码时一定要检查好自己提交的代码 首先把所有的全部取消 然后再根据自己要提交的内容一个个来勾选 Docker网络 container模式&#xff1a;新建的容器和已经存在的一个容器共享一个网络…

【大数据】HADOOP-YARN容量调度器Spark作业实战

目录需求配置多队列的容量调度器验证队列资源需求 default 队列占总内存的40%&#xff0c;最大资源容量占总资源的60% ops 队列占总内存的60%&#xff0c;最大资源容量占总资源的80% 配置多队列的容量调度器 在yarn-site.xml里面配置使用容量调度器 <!-- 使用容量调度器…

从 ELMo 到 ChatGPT:历数 NLP 近 5 年必看大模型

目录AI21 LabsAlibabaAllen Institute for AIAmazonAnthropicBAAIBaiduBigScienceCohereDeepMindEleutherAIGoogleHuggingfaceiFLYTEKMetaMicrosoftNVidiaOpenAISalesforceTsinghua UniversityUC BerkeleyYandex持续更新中 ...参考团队博客: CSDN AI小组 先上 “万恶之源”&…

物联网在智慧农业中的应用

随看现代科技的不断发展&#xff0c;近年来我国农业的进步是显而易见的。从八九十年代农业生产以人力为主&#xff0c;到之后的机械渐渐代替人力&#xff0c;再到如今物联网技术在农业领域的应用&#xff0c;多种前沿技术应用于农业物联网&#xff0c;对智慧农业生产的各个环节…

阿里云_山东鼎信短信的使用(云市场)

目录山东鼎信API工具类随机验证码工具类进行测试Pom依赖(可以先导入依赖)创建controllerSmsServiceSmsServiceImplswagger测试(也可以使用postman)山东鼎信API工具类 山东鼎信短信官网 找到java的Api&#xff0c;复制下来 适当改了一下&#xff0c;为了调用(类名SmsUtils) p…

GEE学习笔记 七十二:【GEE之Python版教程六】命令行简介

这篇开始就要讲解GEE相关的内容&#xff0c;首先聊一下命令行的内容&#xff0c;这个在官方文档中有详细的介绍&#xff0c;这里我简单说一下常用的几个命令&#xff0c;剩余的大家在使用过程中如果又需要可以随时查看相关官方文档的介绍。官方文档地址&#xff1a;https://dev…

pcie link training

有机会用瑞芯微做EP&#xff0c;X86做RC &#xff0c;调试两者建立连接。环境配置如图所示&#xff0c;两块单板&#xff0c;期望瑞芯微做EP&#xff0c;X86做RC&#xff0c;两者能够互联。LINK 配置过程主要配置瑞芯微瑞芯微的芯片配置&#xff0c;在配置EP模式时&#xff0c;…