当前位置: 首页 > news >正文

最小调整顺序次数

题目描述

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

小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 * 10^5。

所有的数据均合法。

输出描述

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

示例

输入5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出1
说明

解题思路

  1. 处理 head add 命令

    • 若序列不为空且当前有序,则添加后序列变为无序;
    • 无论是否有序,都增加序列长度;
  2. 处理 tail add 命令

    • 直接在尾部添加元素,不破坏有序性,仅增加序列长度;
  3. 处理 remove 命令

    • 若序列为空,则不做操作;
    • 若序列当前是无序状态:触发一次 “整理”,整理后序列恢复有序;
    • 无论是否整理,都减少序列长度;

代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.nextLine());int m = n * 2;String[] cmds = new String[m];for (int i = 0; i < m; i++) {cmds[i] = sc.nextLine();}System.out.println(getResult(cmds));}public static int getResult(String[] cmds) {int size = 0;boolean isSorted = true;int count = 0;for (int i = 0; i < cmds.length; i++) {String cmd = cmds[i];if (cmd.startsWith("head add")) {if (size > 0 && isSorted) isSorted = false;size++;} else if (cmd.startsWith("tail add")) {size++;} else {if (size == 0) continue;if (!isSorted) {count++;isSorted = true;}size--;}}return count;}
}

http://www.dtcms.com/a/554648.html

相关文章:

  • 羽毛球赛事在哪里看seo云优化公司
  • 校园网网站建设费用网站开发支持环境
  • rdpwsx!WsxIcaStackIoControl调试记录其中Class: ff Enable: 3f
  • puppeteer配置登录页面自动化测试
  • 手机可以创建网站吗广州网站公司推荐
  • 国内知名摄影网站百度指数功能模块有哪些
  • 小程序网站建设的公司网站怎么做的支付宝接口
  • 「PPG信号处理——(3)基于PPG的脉象分析与中医诊疗研究」2025年10月31日
  • 团购网站模板下载郑州网站外包公司
  • 网站开发语言是什么网站建设需要用到什么软件有哪些
  • 红帽系、银河麒麟V10系统中成功安装部署Docker-ce引擎与Docker-Compose保姆级教程
  • 产品展示的手机网站做网站在手机显示怎么很乱
  • 班级管理网站开发江苏seo
  • 南山做网站哪家专业电商网站怎么做seo优化
  • 网站建设合同有哪些北京南站
  • 登陆建设银行wap网站类似稿定设计的软件有哪些
  • 手机网站制作优化做地方网站能赚钱吗
  • ps做网站的流程池州商城网站开发
  • 汉阳做网站多少钱商务网站开发步骤
  • 南山网站设计泰安中文网站建设电话
  • 常见Web安全漏洞全解析:从原理到防御的实战指南
  • 乾县做网站建设网站要点
  • 免费代刷网站推广企业网络营销策略
  • 函数递归求最大值
  • 雄县网站制作建设中心网页模板免费下载网站
  • Canal 主从同步
  • 仓颉语言从0到1的学习心得-day01
  • 线程互斥:并发编程中的互斥量(Mutex)与RAII风格锁管理机制
  • 中国广东手机网站建设家具设计师要学哪些软件
  • CAN通信原理初步认识