华为OD机试 - 特异性双端队列(Java 2023 B卷 100分)

2023-09-22 12:18:30

在这里插入图片描述

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

一、题目描述

给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据。

输入一个数字n,会依次添加数字1~n(也就是添加n次)。

但是在添加数据的过程中,也会删除数据,要求删除必须按照1~n按照顺序进行删除,所以在删除时,可以根据需要调整队列中数字的顺序以满足删除条件。

二、输入描述

第一行一个数据N,表示数据的范围。

接下来的2N行是添加和删除语句。

其中:

  1. head add x 表示从头部添加元素 x;
  2. tail add 表示从尾部添加元素;
  3. remove表示删除元素。

三、输出描述

输出一个数字,表示最小的调整顺序次数。

四、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 数据的范围
        int n = Integer.parseInt(sc.nextLine());
        // 接下来的2N行是添加和删除语句
        String[] arr = new String[n * 2];
        for (int i = 0; i < arr.length; ++i) {
            arr[i] = sc.nextLine();
        }

        /**
         * 1. head add x 表示从头部添加元素 x;
         * 2. tail add 表示从尾部添加元素;
         * 3. remove表示删除元素。
         */
        int count = 0;
        int input = 0;
        int output = 0;
        LinkedList<Integer> linkedList = new LinkedList<>();
        for (String command : arr) {
            String com = command.split(" ")[0];
            switch (com) {
                case "head":// 表示从头部添加元素 x;
                    linkedList.addFirst(++input);
                    break;
                case "tail":// 表示从尾部添加元素;
                    linkedList.addLast(++input);
                    break;
                default:// 表示删除元素。
                    if (!linkedList.getFirst().equals(++output)) {
                        count++;
                        linkedList.sort(Integer::compareTo);
                    }
                    linkedList.removeFirst();
                    break;
            }
        }
        System.out.print(count);
    }
}

五、效果展示

1、输入

4
head add nezha
remove
tail add study
head add java
remove
remove
head add nezha
head add java

2、输出

1

在这里插入图片描述


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

更多推荐

【Django入门】第一个Django项目

Django,广为人知的PythonWeb框架,以其强大而又灵活的特点脱颖而出。其宣传口号是:“为完美主义者开发的框架”。这篇文章将为你揭示创建第一个Django项目的魔法以及Django项目的基本结构。为什么选择Django?在深入学习前,我们先看看为什么要选择Django:快速开发:Django遵循“约定优于配置”

《ADS2011射频电路设计与仿真实例》功率放大器设计的输入输出匹配

徐兴福这本书的6.6Smith圆图匹配这一节中具体匹配时,直接给出了电容与串联微带的值,没有给出推导过程,我一开始以为是省略了详细推导过程,后来发现好像基本上是可以随便自己设的。以输入匹配(书本6.6.4输入匹配电路的建立)为例:因为它这里要求要在Q=1.5的等Q圆里面进行匹配,可以按照书本的操作显示出1.5的等Q圆,

【MySQL入门实战5】-Linux PRM 包安装MySQL

📢📢📢📣📣📣哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验一位上进心十足的【大数据领域博主】!😜😜😜中国DBA联盟(ACDU)成员,目前从事DBA及程序编程擅长主流数据Oracle、MySQL、PG运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。✨如果有对【

列表页面新增 字段查询 ,点击查询后,前端页面和后端控制台 出现红色报错信息,查询数据失败。

项目场景:项目场景简述:列表页面新增字段查询,点击查询后,前端页面和后端控制台出现红色报错信息,查询数据失败。问题描述问题描述:<el-selectv-model="dataForm.engineerId"clearable@focus="getEngineerList"placeholder="请选择"filtera

真实的产品开发中,后端的设计规约可以写哪些

真实的产品开发中,后端的设计规约可以写哪些产品开发的后端设计规约通常包括以下内容:数据模型设计:详细描述数据库的结构,包括数据表的设计、字段的定义和关系的设置等。业务逻辑设计:详细描述后端的业务逻辑,包括各种算法的设计、业务流程的控制等。API设计:定义后端提供的各种服务接口,包括接口的URL、请求方法、请求参数、响应

CMMI认证是什么?为什么IT类企业都在申请?

如今,越来越多的公司都会去申请获得CMMI的认证,也会以通过认证为荣,那么CMMI认证的意义和目的是什么?怎样可以拿到CMMI认证呢?什么是CMMI?CMMI是由美国卡内基梅隆大学的软件工程研究所(SEI)提出的能力成熟度模型集成,致力于以更加系统和一致的框架来指导组织改善软件过程,提高产品和服务的开发、获取和维护能力

华为云ROMA Connect亮相Gartner®全球应用创新及商业解决方案峰会,助力企业应用集成和数字化转型

9月13日-9月14日Gartner全球应用创新及商业解决方案峰会在伦敦举行本届峰会以“重塑软件交付,驱动业务价值”为主题,全球1000多位业内专家交流最新的企业应用、软件工程、解决方案架构、集成与自动化、API等企业IT战略和新兴技术热门话题。9月13日,华为流程ITROMA首席专家陆昕,华为云ROMAConnect

在JavaScript中,什么是柯里化(currying)?

聚沙成塔·每天进步一点点⭐专栏简介⭐柯里化(Currying)⭐写在最后⭐专栏简介前端入门之旅:探索Web开发的奇妙世界欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习

html播放视频

文章目录<embed>标签<object>标签<video>标签<video>浏览器支持视频格式与浏览器的支持DOM元素提供的方法、属性和事件自定义控制栏<embed>标签<embed>标签的作用是在HTML页面中嵌入多媒体元素。前提:浏览器支持Flash。iPad和iPhone不能显示Flash视频。视频不能转成其他

【ES6知识】 Reflect 与 Proxy

文章目录前言一、Proxy代理对象1.1基本应用1.2同一个拦截器函数,可以设置拦截多个操作:1.3Proxy支持的拦截操作一览,一共13种:二、Reflect对象2.1基本使用2.2`Reflect`对象一共有13个静态方法三、使用Proxy实现观察者模式前言Proxy与Reflect是ES6为了操作对象引入的API

源码编译Qt 5.15.9+msvc2019

官方文档里给出了详细步骤:BuildingQtSourcesBuildingQt5fromGit(Wiki)注:本文基于windows11+vs2019x64+qt5.15.9,不编译QtWebEngine归纳总结如下:准备阶段QtforWindows-Requirements安装python,我这里用的是anacon

热文推荐