第十三届蓝桥杯Java B 组国赛 C 题——左移右移(AC)
目录
- 1.左移右移
- 1.题目描述
- 2.输入格式
- 3.输出格式
- 4.样例输入
- 5.样例输出
- 6.数据范围
- 6.原题链接
- 2.解题思路
- 3.Ac_code
1.左移右移
1.题目描述
小蓝有一个长度为 NNN 的数组, 初始时从左到右依次是 1,2,3,…N1,2,3, \ldots N1,2,3,…N 。
之后小蓝对这个数组进行了 MMM 次操作, 每次操作可能是以下 2 种之一:
-
左移 xxx, 即把 xxx 移动到最左边。
-
右移 xxx, 即把 xxx 移动到最右边。
请你回答经过 MMM 次操作之后, 数组从左到右每个数是多少?
2.输入格式
第一行包含 2 个整数, NNN 和 MMM 。以下 MMM 行每行一个操作, 其中 “LxLxLx "表示左移 xxx ,"RxRxRx "表示右移 xxx 。
3.输出格式
输出 NNN 个数, 代表操作后的数组。
4.样例输入
5 3
L 3
L 2
R 1
5.样例输出
2 3 4 5 1
6.数据范围
1≤N,M≤200000,1≤x≤N.1≤N,M≤200000,1≤x≤N.1≤N,M≤200000,1≤x≤N.
6.原题链接
左移右移
2.解题思路
题目的含义非常简单,如果按照朴素的方式遍历寻找 xxx,然后直接进行插入操作,在nnn的级别在2e52e52e5的范围这时间复杂度显然是不可接受的。想要解决此题我们需要思考两个点:
- 如何高效地进行插入和删除操作
- 如何快速地找到某个点所在的位置
对于第一点,我们应该快速地想到链表这个数据结构,由于题目需要在左端点和右端点都进行插入操作,所以我们应该联想到 双链表 。它可以在O(1)O(1)O(1)的时间范围内对元素进行插入和删除,这显然是我们需要的数据结构。
当然,双链表并不支持高效地查找,所以我们如何快速找到 xxx 的位置呢?这时候我们应该联想到 哈希表,因为我们需要手动实现双链表,所以每个链表结点都对应一个值,同时它也是一个对象,我们可以使用哈希表,以值为keykeykey,以这个链表结点对象为valuevaluevalue。这样我们就可以快速获得这个结点,然后再进行常规的双链表插入删除操作。
3.Ac_code
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.*;public class Main {static Map<Integer,Node> map=new HashMap<>();static PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out));public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt();//双链表的头结点和尾结点Node head=new Node(-1,null,null);Node last=new Node(-1,null,null);Node pre=head;//构建双链表for (int i = 1; i <=n; i++) {pre.next=new Node(i,pre,null);pre=pre.next;map.put(i,pre);}last.pre=pre;pre.next=last;for (int i = 0; i < m; i++) {char c=sc.next().charAt(0);int x=sc.nextInt();//先将x对应的结点在双链表中删除Node node=map.get(x);node.pre.next=node.next;node.next.pre=node.pre;if (c=='L'){//将其插入到左端点node.next=head.next;head.next.pre=node;head.next=node;node.pre=head;}else{//将其插入到右端点node.pre=last.pre;last.pre.next=node;node.next=last;last.pre=node;}}pre=head.next;while (pre!=last){out.print(pre.v+" ");pre=pre.next;}out.flush();}static class Node{int v;Node pre;Node next;public Node(int v, Node pre, Node next) {this.v = v;this.pre = pre;this.next = next;}}
}
相关文章:
第十三届蓝桥杯Java B 组国赛 C 题——左移右移(AC)
目录1.左移右移1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围6.原题链接2.解题思路3.Ac_code1.左移右移 1.题目描述 小蓝有一个长度为 NNN 的数组, 初始时从左到右依次是 1,2,3,…N1,2,3, \ldots N1,2,3,…N 。 之后小蓝对这个数组进行了 MMM 次操作, 每次…...
第14篇:系列二—Java抽象类/接口/枚举
目录 1、继承的定义(Inheritance) 2、继承的优点 2.1 易维护性 2.2 复用性 2.3 条理性...
深入浅出C++ ——哈希
文章目录前言一、unordered系列关联式容器1. unordered_map2. unordered_set二、哈希1. 哈希概念2. 哈希冲突3. 哈希函数4. 哈希冲突解决方法三、模拟实现unordered系列容器1. 哈希表的改造2. 模拟实现 unordered_set3. 模拟实现 unordered_map前言 在C11中,STL又提…...
Tina_Linux_系统裁剪_开发指南
文章目录Tina_Linux_系统裁剪_开发指南1 概述2 Tina系统裁剪简介2.1 boot0裁剪2.2 uboot裁剪2.3 内核裁剪2.3.1 删除不使用的功能2.3.2 删除不使用的驱动2.3.3 修改内核源代码2.3.3.1 size工具.2.3.3.2 ksize.py脚本2.3.3.3 nm命令2.3.3.4 kernel压缩方式.2.4 文件系统裁剪.2.4…...
算法刷题打卡第99天:至少在两个数组中出现的值
至少在两个数组中出现的值 难度:简单 给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 元素各不相同的 数组,且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。 示例 1: 输入&…...
线程池面试题
1. 什么是线程池?为什么要使用线程池? 线程池是一种用于管理线程的技术,它可以在应用程序中重复使用一组线程来执行多个任务。线程池的优点包括提高应用程序的性能和可伸缩性、避免线程创建和销毁的开销、避免线程过多导致系统负担过重等。线…...
【学习笔记】NOIP爆零赛5
说实话是不想补题的。因为每一道题都贼难写,题解又通篇写着显然,然后自己天天搞竞赛又把注意力搞差了,调一道题又调半天,考试的题又难的要死 不会正解 ,部分分又写挂了 可能心态崩了就是从那场t1t1t1签到题考高精度数位…...
【数据结构】时间复杂度
🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…...
vector的基本使用
目录 介绍: vector iterator 的使用 增删查改 增(push_back insert): 删(pop_back erase): swap: vector的容量和扩容: 排序(sort): 介绍ÿ…...
剑指 Offer 55 - I. 二叉树的深度
摘要 剑指 Offer 55 - I. 二叉树的深度 一、深度优先搜索 如果我们知道了左子树和右子树的最大深度l和r,那么该二叉树的最大深度即为:max(l,r)1。 而左子树和右子树的最大深度又可以以同样的方式进行计算。因此我们可以用「深度优先搜索」的方法来计…...
Bean的生命周期和作用域
Bean的生命周期Bean的执行流程:Bean 执行流程:启动Spring 容器 -> 实例化 Bean(分配内存空间,从无到有)-> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取…...
TestNG和Junit的区别,测试框架该如何选择?
要想知道两个框架的区别,首先分别介绍一下两个框架。 TestNG是一个java中的开源自动化测试框架,其灵感来自JUnit和NUnit,TestNG还涵盖了JUnit4整个核心的功能,但引入了一些新的功能,使其功能更强大,使用更…...
MySQL安全登录策略
MySQL密码复杂度策略设置 MySQL 系统自带有 validate_password 插件,此插件可以验证密码强度,未达到规定强度的密码则不允许被设置。MySQL 5.7 及 8.0 版本默认情况下貌似都不启用该插件,这也使得我们可以随意设置密码,比如设置为…...
优化模型验证23:带无人机停靠站的卡车无人机协同配送车辆路径问题、模型、gurobipy验证及结果可视化
带中转hub的卡车无人机车辆路径问题 模型来源为:Wang Z , Sheu J B . Vehicle routing problem with drones[J]. Transportation Research Part B: Methodological, 2019, 122(APR.):350-364. 问题描述: 这篇问题研究了一个带停靠站的卡车无人机路径问题,无人机仅能从起点…...
mongoTemplate Aggregation 多表联查 排序失效问题解决
目录说明说明 接着上一个文章的例子来说:mongoTemplate支持多表联查 排序 条件筛选 分页 去重分组 在按照上一个demo的代码执行后,可能会发生排序失效的问题,为什么说可能呢?每个人负责业务不同,不可能是最简单的dem…...
什么是智慧实验室?
智慧实验室是利用现代信息技术和先进设备将实验室实现智能化和智慧化的概念。通过将各种数据、信息和资源整合在一起,实现实验室设备的互联互通,数据的实时采集、传输、处理和分析,从而提高实验室的效率、精度和可靠性。一、智慧实验室包含多…...
Python abs() 函数
Python abs() 函数Python 数字描述abs() 函数返回数字的绝对值。语法以下是 abs() 方法的语法:abs( x )参数x -- 数值表达式。返回值函数返回x(数字)的绝对值。实例以下展示了使用 abs() 方法的实例:#!/usr/bin/python print "abs(-45) …...
裸辞了,面试了几十家软件测试公司,终于找到想要的工作
上半年裁员,下半年裸辞,有不少人高呼裸辞后躺平真的好快乐!但也有很多人,裸辞后的生活五味杂陈。 面试了几十家终于找到心仪工作 因为工作压力大、领导PUA等各种原因,今年2月下旬我从一家互联网小厂裸辞,没…...
ShardingSphere
1.简介 1.开源的分布式数据生态项目 ShardingSphere-JDBC:轻量级Java框架ShardingSphere-Proxy:数据库代理ShardingSphere-Sidecar(规划中):Kubernetes的云原生数据库代理 2.使用版本:ShardingSphere5.1.1 1.数据库集群架构 1.出现…...
配置Maven
对于刚开始认识的Maven的初学者超级有用的哦!项目统一共享使用一套jar包,由maven统一管理。节省了jar空间,统一jar包版本首先将maven安装完毕测试有没有配置完成,在命令框里面打 mvn -version进行测试maven安装完,第一…...
Ostrakon-VL-8B多模态运维监控实战:智能日志分析与故障预警
Ostrakon-VL-8B多模态运维监控实战:智能日志分析与故障预警 最近和几个做运维的朋友聊天,大家普遍都在吐槽一件事:每天上班就像在“看监控”和“查日志”之间来回切换。服务器告警一响,就得一头扎进海量的日志文件里,…...
从仿真到焊板:手把手教你用741运放和Multisim搞定一个1kHz文氏电桥振荡器
从仿真到焊板:用741运放构建1kHz文氏电桥振荡器的工程实践指南 当你第一次尝试将课本上的振荡电路理论转化为实际可工作的电路时,往往会发现仿真完美的设计在实际搭建时问题百出。文氏电桥振荡器作为经典的RC正弦波发生器,是理解振荡原理和掌…...
颠覆式网盘直连提取革新:ctfileGet让高速下载成为现实
颠覆式网盘直连提取革新:ctfileGet让高速下载成为现实 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 副标题:突破下载限速困境,3步实现城通网盘直链高效提取 ctfil…...
QFIL线刷救砖全攻略:遇到EDL模式切换失败怎么办?附详细COM端口排查方法
QFIL线刷救砖实战指南:EDL模式切换失败的系统级解决方案 当你面对安卓设备变砖的紧急状况,线刷往往是最后的救命稻草。但就在这关键时刻,"Download Fail:Switch To EDL Fail"的红色报错突然弹出,那种从希望到绝望的落差…...
用快马快速构建战网更新睡眠模式诊断工具原型
最近在帮朋友排查战网(Battle.net)客户端更新卡顿的问题时,发现"更新服务进入了睡眠模式"这个提示特别常见。作为开发者,如果能快速验证各种修复方案的有效性,会大大提升排查效率。今天就用InsCode(快马)平台来快速搭建一个诊断工具…...
利用快马ai快速构建b站直播弹幕互动界面原型
最近在B站看A8芯片相关的科技直播时,突然想到如果能快速做个直播辅助工具的原型该多方便。作为一个喜欢折腾的前端开发者,我尝试用InsCode(快马)平台来验证这个想法,整个过程比想象中顺利很多。 原型设计思路 核心需要三个区域:左…...
Mac开发者必看:如何同时管理Protobuf 2.6.1和3.19.4版本(附.proto文件编译避坑指南)
Mac开发者必看:如何同时管理Protobuf 2.6.1和3.19.4版本(附.proto文件编译避坑指南) 在跨版本协议开发中,Mac开发者常面临一个棘手问题:如何在同一台机器上同时维护Protobuf 2.6.1和3.19.4两个不兼容的版本?…...
ColorControl:为什么你的显示器色彩总是不对劲?深度解析开源显示控制工具
ColorControl:为什么你的显示器色彩总是不对劲?深度解析开源显示控制工具 【免费下载链接】ColorControl Easily change NVIDIA display settings and/or control LG TVs 项目地址: https://gitcode.com/gh_mirrors/co/ColorControl 你是否曾为不…...
一站式歌词提取解决方案:163MusicLyrics自动化歌词获取与处理工具
一站式歌词提取解决方案:163MusicLyrics自动化歌词获取与处理工具 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 163MusicLyrics是一款专业的跨平台歌词提取…...
随笔 3(Linux)
目录 一、文件内容筛选与压缩打包 二、容器基础:Podman 登录与镜像构建 三、容器持久化与 systemd 托管 四、文件同步:rsync 远程传输 五、LVM 逻辑卷扩容 六、SWAP 分区配置 七、LVM 全新存储配置 八、系统调优:tuned 一、文件内容筛…...
