华为机试真题 C++ 实现【最小调整顺序次数】【100%通过率】【2022.11 Q4 新题】

2023-11-16

题目

给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据。输入一个数字n,会依次添加数字1~n(也就是添加n次)。

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

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

接下来的2N行是添加和删除语句。其中:head add x 表示从头部添加元素 x,tail add
表示从尾部添加元素,remove表示删除元素。

输出描述

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

示例:

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

输出:

1

说明

第1步:[1]

第2步:[1,2]

第3步:头部删除1,无需调整,还剩[2]

第4步:[3,2]

第5步:[3,2,4]

第6步:[5,3,2,4]

第7步:头部删除2,调整顺序再删除,还剩[3,4,5]

第8步:头部删除3,无需调整,还剩[4,5]

第9步:头部删除4,无需调整,还剩[5]

第10步:头部删除5,无需调整

只需要调整1次

思路
代码:

#include <iostream>
#include <string>
#include <map>
#include <set>
#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

int main()
{
	int n = 0;
	string operat;

	cin >> n;
	getchar();
	bool isOrder = true;
	int ans = 0;
	int size = 0;
	for (int i = 0; i < 2 * n; ++i)
	{
		getline(cin, operat);
		if (operat.find("remove") != string::npos)
		{
			if (isOrder == false)
			{
				isOrder = true;
				ans++;
			}
		}
		else if (operat.find("head add") != string::npos)
		{
			int pos = operat.rfind(" ");
			int data = stoi(operat.substr(pos + 1));
			if (size)
			{
				isOrder = false;
			}
			size++;
		}
		else if (operat.find("tail add") != string::npos)
		{
			int pos = operat.rfind(" ");
			int data = stoi(operat.substr(pos + 1));
			size++;
		}
	}

	cout << ans << endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为机试真题 C++ 实现【最小调整顺序次数】【100%通过率】【2022.11 Q4 新题】 的相关文章

随机推荐

  • react仿钉钉流程图-审批工作流

    前言 此前做项目遇到一个流程图的业务场景 查找了一些资料和插件都没有找到理想的 最后找到了一款比较美观 仿钉钉流程图的 但是找来找去都找不到react版本的 只找到vue版本的 没办法 只能自己写一个 仿钉钉流程图 Api包括 一维数组传参
  • vue 自适应屏幕分辨率,在不同分辨率,以及缩放都按照设计稿展示

    项目中 会遇到这样的问题 一个网页在1920 1080的分辨率下 一屏正好展示完当前页面 但是在1366 768 或者在2k高分辨率下 页面会有滚动条 或者下方会出现空白 还有一种是14寸 或者13寸笔记本在出厂时会设置缩放125 或者15
  • C# NPOI写excel文件,设置某个单元格为自动筛选

    如标题所示 附上几行代码 HSSFWorkbook workbook new HSSFWorkbook 创建工作表 var sheet workbook CreateSheet 信息表 设置excel的自动筛选 CellRangeAddre
  • 函数局部有界性定理_高等数学入门——函数极限的基本性质

    系列简介 这个系列文章讲解高等数学的基础内容 注重学习方法的培养 对初学者不易理解的问题往往会不惜笔墨加以解释 在内容上 以国内的经典教材 同济版高等数学 为蓝本 并对具体内容作了适当取舍与拓展 例如用 语言证明函数极限这类高等数学课程不要
  • API学习笔记:2.3-2.4 API核心DLL与Unicode和多字节

    API核心DLL与Unicode和多字节 2 3 Windows核心DLL 2 3 1 核心DLL简介 2 4 Unicode和多字节 2 4 1 W版本和A版本的API 2 4 2 Unicode与ASCII的转换 前面几章基本都是总体的
  • ls: 显示目下的内容及相关属性信息

    ls 显示目下的内容及相关属性信息 功能说明 ls 命令可以理解为英文单词 list 的缩写 其功能是列出目录的内容及其内容属性信息 list directory contents 该命令有点类似于DOS系统下的dir命令 有趣的是 Lin
  • Linux内核分析:输入输出,字符与块设备 31-35

    CPU 并不直接和设备打交道 它们中间有一个叫作设备控制器 Device Control Unit 的组件 例如硬盘有磁盘控制器 USB 有 USB 控制器 显示器有视频控制器等 这些控制器就像代理商一样 它们知道如何应对硬盘 鼠标 键盘
  • 左孩子右兄弟 蓝桥杯1451 python

    题目描述 对于一棵多叉树 我们可以通过 左孩子右兄弟 表示法 将其转化成一棵二叉树 如果我们认为每个结点的子结点是无序的 那么得到的二叉树可能不唯一 换句话说 每个结点可以选任意子结点作为左孩子 并按任意顺序连接右兄弟 给定一棵包含 N 个
  • 利用cl_demo_output=>display( )实现日志的功能

    有一些客户需要对一些批处理程序进行消息日志提醒 需要用到弹窗ALV cl demo output gt display 是实现该功能最简单的方式 只需要定义一个内表就行了 如图所以 客户运行了一个库存导入的程序 将BAPI抛出的结果利用弹窗
  • debian 11搭建nis服务器

    NIS的由来与功能 NIS Network InformationService网络信息服务 用于对网络中的多台Linux系统的帐号和密码的集中管理和维护 也就是说可以用同一个帐号登录域中的Linux系统 不需要所登录的系统中存在该帐号 所
  • QT入门笔记(一)QT信号和槽

    QT入门笔记 Qt事件 Qt 事件指的是应用程序和用户之间的交互过程 例如用户按下某个按钮 点击某个输入框等等 实际上除了用户会与应用程序进行交互外 操作系统也会与应用程序进行交互 例如当某个定时任务触发时 操作系统会关闭应用程序 这也是一
  • Linux C基础——” Makefile “ 文件管理大师你拜访过嘛?

    文章目录 Make简介 Makefile基本结构 1 make是如何工作的 2 makefile文件中的依赖关系理解 3 Makefile书写规则 4 Makefile 基础的使用 3 makefile文件中的依赖关系理解 4 创建和使用变
  • 个人博客 blog

    介绍 blog是基于springboot搭建的个人博客 响应式 项目地址 https github com chy1984 blog 前端技术 html css js jq bootstrap 后台技术 springboot thymele
  • 公司章程变更需要经过哪些程序

    公司章程变更需要经过以下程序 1 提议修改公司章程 一般由董事会提出修改建议 董事会是公司经营的决策机构 对公司经营情况以及章程的执行和变化情况较为了解 能够对公司章程的修改提出具有积极意义的建议 2 将修改公司章程的提议通知股东 公司章程
  • 搜索引擎solr系列--3字节的UTF-8序列的字节3无效

    搜索引擎solr系列 3 字节的 UTF 8 序列的字节 3 无效问题 有一次在数据导入的时候 报出了这个错误 大概如下 Data config 3 字节的 UTF 8 序列的字节 3 无效 很明显编码问题 不管你是报了1字节 2字节 之类
  • Idea上运行eclipse项目及打包

    概述 最近有时间 想把原来eclipse的项目迁移到IntelliJ IDEA 中 迁移过程中遇到很多问题 再次记录一下 方便其他 童鞋 快速爬坑 迁移前准备 jdk安装及配置 不会的同学自行度娘 tomcat安装及配置 不会的同学自行度娘
  • System.arraycopy()详解

    java lang System arraycopy 方法复制指定的源数组的数组 在被copy的数组指定的位置开始 到目标数组的指定位置 具体方法如下 public static void arraycopy Object src int
  • IAR8.10.3编译ZStack-CC2530-2.3.0-1.4.0产生的警告解决方法

    http blog chinaunix net uid 24343357 id 3605556 html 分类 嵌入式 1 Warning w2 Symbol PBANK is redefined in command line 2 War
  • [org/springframework/boot/autoconfigure/web/ServerPropertiesAutoConfiguration.class] cannot be opene

    使用feign报错 org springframework beans factory BeanDefinitionStoreException Failed to process import candidates for configu
  • 华为机试真题 C++ 实现【最小调整顺序次数】【100%通过率】【2022.11 Q4 新题】

    题目 给定一个队列 但是这个队列比较特殊 可以从头部添加数据 也可以从尾部添加数据 但是只能从头部删除数据 输入一个数字n 会依次添加数字1 n 也就是添加n次 但是在添加数据的过程中 也会删除数据 要求删除必须按照1 n按照顺序进行删除