华为OD机试真题 Python实现【最小的调整次数】【2023Q1 100分】

news2025/1/12 10:10:26

在这里插入图片描述

目录

    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、补充说明
    • 五、解题思路
    • 六、Python算法源码
    • 七、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

一、题目描述

有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但是只能从头部移出数据。

小A依次执行2n个指令往队列中添加数据和移出数据。

其中n个指令是添加数据 (可能从头部添加、也可能从尾部添加),依次添加1到n,n个指令是移出数据,现在要求移除数据的顺序为1到n。

为了满足最后输出的要求,小A可以在任何时候调整队列中数据的顺序。

请问 小A 最少需要调整几次才能够满足移除数据的顺序正好是1到n。

二、输入描述

第一行一个整数 n,表示数据范围。

接下来有 2n 行,其中有n行为添加数据:

  • 指令“ head add x”表示从头部添加数据x;
  • “tail add x”表示从尾部添加数据x;
  • 另外n行为移出数据指令,指令为“remove”的形式,表示移出1个数据;

取值范围:

1<=n<=3*105,所有的数据均合法。

三、输出描述

一个整数,表示小A 要调整的最小次数。

四、补充说明

输入会保证按照1到n的顺序加入队列。确保输出时对应的数据已经在队列中。

五、解题思路

  1. 读取输入的数据范围 n;
  2. 创建一个空的链表 linkedList 用于模拟双端队列;
  3. 读取 2n 行的指令,将其存储在列表 list 中;
  4. 初始化当前需要移除的数据索引 index 为 1,调整次数 times 为 0;
  5. 遍历列表 list,对于每一条指令:
    • 如果指令长度为 1,则表示需要移除数据,执行以下操作:
      • 如果队列头部的元素不等于当前需要移除的数据索引 index,则说明需要调整队列的顺序;
        • 对链表 linkedList 进行排序;
        • 增加调整次数 times;
      • 从队列头部移除一个元素;
      • 增加当前需要移除的数据索引 index;
    • 如果指令长度大于 1,则表示需要添加数据,执行以下操作:
      • 解析指令中的数字 num;
      • 如果指令为 “head add”,则将数字 num 添加到队列头部;
      • 如果指令为 “tail add”,则将数字 num 添加到队列尾部;
  6. 输出调整次数 times;

六、Python算法源码

def min_adjustments(n, instructions):
    index = 1
    times = 0
    linked_list = []

    for instruction in instructions:
        strings = instruction.split(" ")
        if len(strings) == 1:
            if linked_list[0] != index:
                linked_list.sort()
                times += 1
            linked_list.pop(0)
            index += 1
        else:
            num = int(strings[2])
            if strings[0] == "head":
                linked_list.insert(0, num)
            else:
                if len(linked_list) == 0:
                    linked_list.append(num)
                else:
                    linked_list.insert(len(linked_list) - 1, num)

    return times

七、效果展示

1、输入

3
head add 2
remove
tail add 4
head add 5
remove
remove

2、输出

3

3、说明

第一次remove,不需要调整,可以直接满足输出要求;
第二次remove命令执行时,需要调整队列中元素的位置,将2调整到最前面,才可以满足输出的要求。

在这里插入图片描述



🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

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

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

uboot详解(嵌入式学习)

uboot详解 概念详解扩展Windows的“uboot” 概念 U-Boot&#xff08;Unified Bootloader&#xff09;是一个开源的嵌入式系统引导加载程序&#xff0c;也是一种通用的引导加载程序。它主要用于嵌入式系统的启动过程&#xff0c;负责初始化硬件设备、加载操作系统内核和启动应用…

Android Studio 使用 Build Variants 配置测试/正式环境域名等字段

拿测试环境域名和正式环境域名举例&#xff1a;在项目调试和发版过程中可以通过频繁地注释和解开注释来切换正式环境域名和测试环境域名&#xff0c;但此方法过于繁琐&#xff1b;所以可以使用Android Studio的Build Variants根据切换环境来替我们执行切换环境的操作。 在项目…

《HelloGitHub》第 87 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

可视化对讲广播电话可以用在哪里

可视化对讲广播电话可以用在哪里 可视化对讲广播电话&#xff1a;无处不在的沟通利器 【工地现场】 在矗立的高楼上&#xff0c;工地上忙碌的工人们使用着可视化对讲广播电话。借助高清画面和清晰音频&#xff0c;工作人员可以实时观察工地情况&#xff0c;更好地协调工作&a…

【【51单片机实现LED点阵屏幕和动画显示】】

LED点阵屏幕和驱动代码 我们先搞清楚&#xff17;&#xff14;HC&#xff15;&#xff19;&#xff15;的原理 &#xff53;&#xff46;&#xff52; 特殊功能寄存器声明 &#xff53;&#xff42;&#xff49;&#xff54; 特殊位声明 就举个例子&#xff0c;我们在之前的…

Linux后台运行Python脚本

Linux后台运行Python脚本命令&#xff1a; nohup python webui.py > myout.file 2>&1 &nohup&#xff1a;nohup命令用于不挂断地运行命令python&#xff1a;执行python代码的命令webui.py: python程序脚本源代码>: 打印程序输出信息到指定日志文件中myout.fi…

[vue]使用Element--Tree 树形控件使用props解决自定义slot-scope=“{ node, data }“的对象问题

在未用props定义的情况下&#xff0c;slot-scope"{ node, data }"解析data对象只有data含有lable和children才能识别出内容和子节点 当我获取的数据如下&#xff0c;没有lable和children&#xff0c;使用的是name和childList&#xff0c;如下图所示&#xff1a; 注意…

设计必备的矢量插画素材,这几个网站超齐全。

分享几个设计必备的矢量插画、插图素材网站&#xff0c;建议收藏~ 菜鸟图库 https://www.sucai999.com/searchlist/bianpingchahua----all-0-1.html?vNTYxMjky 菜鸟图库是一个素材非常丰富的网站&#xff0c;这里面涵盖了平面、电商、UI、图片、高清背景、插画、视频、音频等…

【新星计划】技术博客写作技巧经验分享

序言 写技术博客需要一定的专业知识和写作技巧&#xff0c;它是一个很好的方式来分享你的经验和知识&#xff0c;同时也是一个展示你的专业能力和建立自己品牌的机会。 以下是一些准备和建议&#xff0c;希望可以帮助你写出有用和有吸引力的技术博客&#xff1a; 写在前面 我报…

使用Elasticsearch进行word,excel,PDF的全文检索 windows实现 超完整(ingest-attachment实现)

首先要明确的一点就是Elasticsearch的版本要和ingest-attachment的版本一致&#xff0c;要不然没办法安装。然后还有一点JAVA版本要在11以上 先说说原理吧&#xff0c;其实就是将文件base64编码&#xff0c;然后再用插件读取文件内容并保存到es中。 1.如果你的版本是JAVA1.8的…

win11系统升级后QT的程序识别套件失败解决

解决方法&#xff1a; QTCreator的配置文件存放位置:C:\Users\%USERNAME%\AppData\Roaming\QtProject。删除这个文件夹下的文件&#xff0c;重启QT就会自动识别kits套件初始化信息等 就是QT我配置的颜色也消失了按照如下步骤重新配置后再次重启QT即可 这个方法导致我QT 上配…

苹果开发者账号续费流程及苹果开发者账号续费流程及下架处理

当开发者的苹果开发者账号即将到期时&#xff0c;可能会面临以下问题&#xff1a;“如何查看开发者账号剩余时间&#xff1f;”和“如何进行续费&#xff1f;”本文将详细解答这些问题。 如何查询账号过期时间&#xff1f; 如果距离开发者账号过期时间不到一个月&#xff0c;您…

KNIME工作流和节点比较功能

KNIME工作流和节点比较功能是一个在 << KNIME 视觉化数据分析 >> 中没有讲到的知识点。 KNIME工作流和节点比较功能在以下几种情况下非常有用&#xff1a; 版本控制&#xff1a;此功能可以跟踪工作流和节点中的更改。如果需要返回到之前的工作流或节点版本&#xf…

Spring + ECharts数据可视化

Apache ECharts是一个基于 JavaScript 的开源可视化图表库&#xff0c;在网页上实现数据的可视化&#xff0c;非常好用&#xff0c;来简单写一个demo&#xff0c;实践一下。 目录 一、成果 二、数据准备 三、具体实现 某年每个学生各科分数的柱状图 后端 前端 后端代码 …

Echarts设置X轴只显示刻度线,不显示X轴轴线

Echarts设置X轴只显示刻度线&#xff0c;不显示X轴轴线&#xff1a; option {xAxis: {......axisLine: {show: false,lineStyle: {color: red,}},......},...... } 效果&#xff1a; 上图中X轴轴线位置的横线&#xff0c;其实是yAxis的splitLine&#xff0c;将splitLine的sh…

(十九)数据编辑——属性编辑②

数据编辑——属性编辑② 使用键盘输入值并不是编辑表中值的唯一方式。在某些情况下&#xff0c;为了设置字段值&#xff0c;可能要对单条记录甚至是所有记录执行数学计算。ArcMap 中的字段计算器可以对所有或所选记录进行简单和高级计算。 此外&#xff0c;还可以基于字段计算…

Vue生态及实践 - vuex

目录 Vuex vuex基础 阶段小结&#xff08;vuex的四种对象&#xff09; vuex响应式原理 vuex.js的实现 index.js Module 局部状态 命名空间 跨模块访问数据 小结 目标 Vuex相关基本概念和使用方式vuex响应式原理过程vuex中如何进行模块式开发 Vue2.0是单向数据流的…

H5学习期间 问题文档(更新中)

目录 一、html与css中让标签 二、css鼠标滑入显示div 三、git报错解决方案 四、ul>li中给h1标签设置行高 一、html与css中让标签<li>在同一行显示 li标签一行显示 效果展示&#xff1a; 代码块&#xff1a; <!DOCTYPE html> <html lang"en"…

国内做MES系统的企业哪家好?

什么是MES&#xff1f;国内做MES系统的企业哪家好&#xff1f;下面分为两块跟大家详细讲解。 一、什么是MES&#xff1f; 1、概念&#xff1a; MES&#xff08;英文全称&#xff1a;Manufacturing Execution System&#xff09;制造执行系统&#xff0c;是面向车间生产的管理…

常用调用链等监控对比

1 了解监控 什么是监控&#xff1f; 指对计算机系统、网络、应用程序等进行实时、持续的管理和控制&#xff0c;以确保系统的性能、稳定性和安全性。 具体来说&#xff0c;监控可以通过收集和分析各种指标数据来实现&#xff0c;例如CPU、内存、网络、磁盘等硬件指标&#xf…