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

蓝桥杯-左移右移(2022国赛)

蓝桥杯-左移右移

    • 1、问题描述
    • 2、解题思路与代码实现
      • 2.1 方法一:使用`LinkedList`双向链表实现(50%)
      • 2.2 方法二:使用HashMap+左右临界值实现(100%)

1、问题描述

  小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3,…N

  之后小蓝对这个数组进行了 M 次操作, 每次操作可能是以下 2 种之一:

  1. 左移 x, 即把 x 移动到最左边。
  2. 右移 x, 即把 x 移动到最右边。

  请你回答经过 M 次操作之后, 数组从左到右每个数是多少?

输入格式

  第一行包含 2 个整数, NM

  以下 M 行每行一个操作, 其中 “L x "表示左移x,"Rx "表示右移x

输出格式

  输出 N 个数, 代表操作后的数组。

样例输入

5 3
L 3
L 2
R 1

样例输出

2 3 4 5 1

样例说明

  样例中的数组变化如下:

[1,2,3,4,5]→[3,1,2,4,5]→[2,3,1,4,5]→[2,3,4,5,1][1,2,3,4,5]→[3,1,2,4,5]→[2,3,1,4,5]→[2,3,4,5,1][1,2,3,4,5][3,1,2,4,5][2,3,1,4,5][2,3,4,5,1]

  评测用例规模与约定

  对于 50% 的评测用例, 1≤N,M≤10000.

  对于 100% 的评测用例, 1≤N,M≤200000,1≤xN.

运行限制

  • 最大运行时间:3s
  • 最大运行内存: 512M

2、解题思路与代码实现

2.1 方法一:使用LinkedList双向链表实现(50%)

  我们使用双向链表结构来存储这N个元素,若输入的是L x,我们就找到这个x,将该节点移动到链表的头部,可以直接将该节点删除,然后使用addFirst(E e)方法直接插入到链表头部。

  若输入的是R x,我们也找到这个x,然后使用addLast(E e)将该节点移动到链表的尾部即可。

  双向链表插入和删除元素比较快,但是我们的时间主要花费在了查找x这个值上面,这个方法只能通过50%的测试用例

import java.util.LinkedList;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int m = scan.nextInt();LinkedList<Integer> list = new LinkedList<>();for (int i = 0; i <n; i++) {list.addLast(i+1);}for (int i = 0; i <m ; i++) {String s = scan.next();int num = scan.nextInt();if(s.equals("L")){//左移//删除此列表中指定元素的第一个出现(从头到尾遍历列表时//由于此集合中没有重复元素,所以结果正确list.removeFirstOccurrence(num);list.addFirst(num);}else{//右移list.removeFirstOccurrence(num);list.addLast(num);}}list.forEach(x->{System.out.print(x+" ");});scan.close();}
}

image-20230308213612126

2.2 方法二:使用HashMap+左右临界值实现(100%)

  我们使用HashMap存储这n个值,初始化的时候keyvalue相等,都存的是数值。

  定义两个边界,左边界:l=0,有边界:r=n+1

  然后从第一个元素开始遍历,当接收到L x,开始左移的时候,我们的key不动,将value赋值为左边界l,并将左边界自减l--

  当接收到R x,开始右移动的时候,我们同样将key不动,将value赋值为右边界R,同时将右边界的值自增r++

  遍历结束之后,我们只需要将map中的值按照value排序,然后输出排序之后的key即可。

  移动的过程如下图所示

image-20230308215204205

import java.util.*;
import java.util.stream.Collectors;public class ACCode {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int m = scan.nextInt();int l=0;//最左临界值int r=n+1;//最优临界HashMap<Integer, Integer> map = new HashMap<>();//key和value的初始化for (int i = 1; i <=n ; i++) {map.put(i,i);}for (int i = 0; i <m ; i++) {String s = scan.next();int num = scan.nextInt();if(s.equals("L")){//如果是左移,将value赋值为左临界值,再将左临界值自减map.put(num,l--);}else{//如果是右移,则将value赋值为右临界值,并将右边临界值+1map.put(num,r++);}}//查看此时的mapSystem.out.println(map);//将map根据value排序并输出map.entrySet().stream().sorted(Map.Entry.comparingByValue()).map(Map.Entry::getKey).collect(Collectors.toList()).forEach(x->System.out.print(x+" "));}
}

  输入测试用例,顺便打印下移动结束之后的map

image-20230308214332427

方法二思路来源:https://blog.csdn.net/weixin_64061088/article/details/128696642

相关文章:

蓝桥杯-左移右移(2022国赛)

蓝桥杯-左移右移1、问题描述2、解题思路与代码实现2.1 方法一&#xff1a;使用LinkedList双向链表实现(50%)2.2 方法二&#xff1a;使用HashMap左右临界值实现(100%)1、问题描述 小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3,…N 。 之后小蓝对这个数组进行了 M 次操…...

你还在手撸SQL?ChatGPT笑晕在厕所

文章目录你还在手撸SQL&#xff1f;ChatGPT笑晕在厕所一、背景二、面向Chat编程1. 数据库设计2. 建表语句3. 加中文注释4. 数据模拟5. 查询成绩6. 修改课程任课老师7. 删除课程8. 删除一个有关联数据的课程总结你还在手撸SQL&#xff1f;ChatGPT笑晕在厕所 一、背景 经典3表设…...

【Redis】Redis慢查询

文章目录慢查询记录慢查询两个配置参数修改配置参数慢查询日志慢查询记录 我们都知道像mysql等持久化数据库会有慢查询日志&#xff0c;其实Redis中也有慢查询日志的功能。慢查询就是系统在执行命令的前后计算每条命令的执行时间&#xff0c;如果超过我们预设的时间&#xff0c…...

【Kubernetes】第二十一篇 - k8s 项目部署流程和操作梳理

一&#xff0c;前言 上一篇&#xff0c;介绍了 k8s 污点和容忍度&#xff1b; 在了解前面 k8s 介绍之后&#xff0c;设计并完成一个前后端项目的部署和持续集成&#xff1b; 本篇&#xff0c;介绍基于 k8s 项目部署流程设计&#xff1b; 二&#xff0c;项目部署流程设计 本…...

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

搜索Query理解和语义召回技术 随着用户规模和产品的发展, 搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键。本次将介绍搜索在 query term weighting,同义词扩展,query 改写,以及语义召回等方向上的实践方法和落地情况。 1.面临问题:长尾 qu…...

【项目精选】基于SSH的医院在线挂号系统(视频+论文+源码)

点击下载源码 医院挂号系统主要用于实现医院的挂号&#xff0c;前台基本功能包括&#xff1a;用户注册、用户登录、医院查询、挂号、取消挂号、修改个人信息、退出等。 后台基本功能包括&#xff1a;系统管理员登录、医院管理、科室管理、公告管理、退出系统等。 本系统结构如…...

Pandas库:从入门到应用(一)

一、Pandas简介 pandas是 Python 的核⼼数据分析⽀持库&#xff0c;提供了快速、灵活、明确的数据结构&#xff0c;旨在简单、直观地处理关系型、标记型数据。pandas是Python进⾏数据分析的必备⾼级⼯具。 pandas的主要数据结构是 **Series(**⼀维数据)与 DataFrame (⼆维数据…...

MySQL中concat()、concat_ws()、group_concat()函数使用

在平时工作中&#xff0c;经常记不清或者记混他们的用法&#xff0c;正好有时间就记录一下&#xff5e;concat()函数语法&#xff1a;concat(str1, str2, int1...)例如执行sql:SELECT CONCAT(id,USERNAME,USER_PHONE) FROM tb_user输出查询结果为&#xff1a; 1test15216756754…...

【JavaEE初阶】第四节.文件操作 和 IO (上篇)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、文件 1.1 文件的概念 1.2 文件的路径二、 Java中文件系统操作 2.1 File类的属性 2.2 File类的构造方法 2.3 File类的方法 …...

开源免费堡垒机Teleport堡垒机的安装

准备:纯净centos7系统一个作为堡垒机,若干个linux系统或windows系统服务器作为受保护的服务器 堡垒机IP:192.168.1.15 服务器IP:192.168.1.10 1、teleport安装 下载地址: https://www.tp4a.com/static/download/teleport-server-linux-x64-3.6.4-b3.tar.gz xshell上传压缩…...

图形报表ECharts

图形报表ECharts1 图形报表ECharts1.1 ECharts简介-富客户端图表库ECharts缩写来自Enterprise Charts&#xff0c;商业级数据图表&#xff0c;是百度的一个开源的使用JavaScript实现的数据可视化工具&#xff0c;可以流畅的运行在PC和移动设备上&#xff0c;兼容当前绝大部分浏…...

便捷式储能电源核心技术--单相逆变器设计

便捷式储能电源核心技术–单相逆变器设计 1.逆变器的规格参数 输入电压直流400V输出电压交流rms220V开关频率10kHz滤波电容6.23uF控制方式单极性倍频2.视频学习链接 视频学习链接 3.主电路仿真设计...

Gamma矫正

Gamma 曲线Gamma校正被使用在8位RGB图中。用来解决在有限的存储空间中保存尽可能多的人类感受敏感的色彩内容。Gamma 矫正Gamma校正的方式就是采样时,和输出到显示器给人类看时,对亮度进行的调整.如采样时 Gamma1/2.2 调亮Gamma&#xff0c;如显示时 Gamma2.2 调暗Gamma实际亮度…...

速懂cookie,session,token

文章目录cookiesessiontoken区别cookie 是浏览器提供的一种能力&#xff0c;可以在每次发起请求前&#xff0c;带上cookie里面的内容&#xff08;一些key&#xff0c;value值&#xff09; 分类&#xff1a; 会话级cookie&#xff1a;默认情况&#xff0c;就是会话级cookie&…...

javaEE初阶 — HTML 中的常见标签

文章目录注释标签标题标签&#xff1a;h1 h6段落标签&#xff1a;p换行标签&#xff1a;br格式化标签图片标签&#xff1a;img1. img 的 alt 属性2. img 的 title 属性3. width 与 heigth 属性用来描述图的尺寸超链接标签&#xff1a;a表格标签列表标签表单标签1. from 标签2. …...

MySQL慢查询

2 慢查询 2.1 慢查询介绍 MySQL的慢查询日志是MySQL提供的一种日志记录&#xff0c;它用来记录在MySQL中响应时间超过阀值的语句&#xff0c;具体指运行时间超过long_query_time值的SQL&#xff0c;则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL&…...

tensorflow【import transformers 报错】

目录 一、安装 安装好了tensorflow,但是import时候报错&#xff1a; import transformers 报错 一、安装 &#xff08;1&#xff09;创建环境&#xff1a; conda create -n [name] python3.3-3.7 &#xff08;2&#xff09;激活环境&#xff1a; conda activate [name] …...

JMU软件20 计算机网络复习

文章目录题型单位换算第一章协议与划分层次、网络协议的三个组成要素&#xff0c;分层的思想等协议网络协议的三个组成要素分层的思想⭐计算机网络体系结构OSI 的七层协议TCP/IP 的四层协议五层协议发送时延、传播时延、总时延、往返时间RTT计算第二章 物理层传输媒体导向性传输…...

Java基础之《dubbo(1)—dubbo基础入门》

一、为什么要使用dubbo 1、dubbo是什么 dubbo是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。 2、dubbo有何特点 &#xff08;1&#xff09;远程通讯&#xff1a;提供透明化的远程方法调用&#xff0c;提供…...

HTML注入的一种攻击思路(超链接替换为点击验证,现在常见)

目录 背景 利用方法 举一反三 场景1:截获 TOKEN 场景2:截获后台信息 总结...

千问3.5-27B知识库应用:OpenClaw变身技术问答助手

千问3.5-27B知识库应用&#xff1a;OpenClaw变身技术问答助手 1. 为什么需要本地化技术问答助手&#xff1f; 去年我在开发一个开源项目时&#xff0c;遇到了一个奇怪的Docker网络问题。当时在Stack Overflow上搜索了半天&#xff0c;找到的答案要么过时&#xff0c;要么不适…...

2025最权威的降AI率网站实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有的技术方案&#xff0c;其旨在减低文本人工智能生成特征&#xff0c;这就是降AIGC工具。它…...

魔兽争霸III终极优化指南:5分钟让经典游戏焕发新生

魔兽争霸III终极优化指南&#xff1a;5分钟让经典游戏焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在现代电脑上的糟糕体…...

5个维度解析UEFITOOL:BIOS固件分析与修改的全能工具

5个维度解析UEFITOOL&#xff1a;BIOS固件分析与修改的全能工具 【免费下载链接】UEFITOOL28 项目地址: https://gitcode.com/gh_mirrors/ue/UEFITOOL28 UEFITOOL是一款专注于UEFI BIOS固件解析的开源工具&#xff0c;它能够帮助技术人员深入分析固件内部结构、提取关键…...

C语言基础:LiuJuan20260223Zimage嵌入式开发入门

C语言基础&#xff1a;LiuJuan20260223Zimage嵌入式开发入门 1. 学习目标与前置知识 如果你是刚开始接触嵌入式开发的C语言初学者&#xff0c;这篇文章就是为你准备的。我们将从最基础的C语言语法开始&#xff0c;一步步带你了解如何在嵌入式环境中使用C语言进行开发。不需要…...

量子机器学习在医疗影像中的技术迷思与测试验证陷阱

当量子计算遭遇医学影像近年来&#xff0c;"量子赋能医疗影像"成为热门概念&#xff0c;宣称通过量子算法&#xff08;如QSVM、量子卷积&#xff09;可大幅提升病灶识别精度和图像重建效率。然而&#xff0c;作为软件测试从业者&#xff0c;我们需警惕技术炒作背后的…...

如何彻底解决消息撤回难题?RevokeMsgPatcher带来的革新方案

如何彻底解决消息撤回难题&#xff1f;RevokeMsgPatcher带来的革新方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitco…...

Odoo 19成本核算避坑指南:标准成本法下差异分析、委外加工汇率风险与WIP分录丢失问题

Odoo 19成本核算实战避坑指南&#xff1a;标准成本差异、委外加工与WIP分录的深度解决方案 在制造业数字化转型浪潮中&#xff0c;Odoo 19作为开源ERP的领军者&#xff0c;其制造与会计模块的深度集成能力备受企业青睐。然而&#xff0c;当我们真正将系统投入生产环境时&#x…...

League Akari:英雄联盟玩家的终极智能工具箱 - 3大核心功能深度解析

League Akari&#xff1a;英雄联盟玩家的终极智能工具箱 - 3大核心功能深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟…...

攻克ComfyUI ControlNet Aux预处理难题:4个实用方案助你快速恢复功能

攻克ComfyUI ControlNet Aux预处理难题&#xff1a;4个实用方案助你快速恢复功能 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux ComfyUI ControlNet Auxi…...