分班 - 华为OD统一考试(JavaScript 题解)

华为OD机试题库《C++》限时优惠 9.9

华为OD机试题库《Python》限时优惠 9.9

华为OD机试题库《JavaScript》限时优惠 9.9

针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。

看不懂有疑问需要答疑辅导欢迎私VX: code5bug

华为od机试

题目描述

幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友是否同班,请你帮忙把同班的小朋友找出来。

小朋友的编号为整数,与前一位小朋友同班用Y表示,不同班用N表示。

输入描述

输入为空格分开的小朋友编号和是否同班标志。
比如:6/N 2/Y 3/N 4/Y,表示共4位小朋友,2和6同班,3和2不同班,4和3同班。
其中,小朋友总数不超过999,每个小朋友编号大于0,小于等于999。
不考虑输入格式错误问题。

输出描述

输出为两行,每一行记录一个班小朋友的编号,编号用空格分开。且:

1、编号需要按照大小升序排列,分班记录中第一个编号小的排在第一行。

2、若只有一个班的小朋友,第二行为空行。

3、若输入不符合要求,则直接输出字符串ERROR。

示例1

输入:
1/N 2/Y 3/N 4/Y输出:
1 2
3 4说明:
2的同班标记为Y,因此和1同班。
3的同班标记为N,因此和1、2不同班。
4的同班标记为Y,因此和3同班。
所以1、2同班,3、4同班,输出为
1 2
3 4

题解

该题目属于构造算法,也可以归类为字符串处理和数组操作类型的题目。通过对输入进行解析并根据条件将小朋友分班,需要保持结果的升序排列,同时处理异常输入。

解题思路

  1. 数据解析:输入是以空格分开的小朋友编号和是否同班标志。解析时要把小朋友编号与是否同班的标志分离开。

  2. 分班:从第一个小朋友开始,使用两个列表分别存放两个班的小朋友。根据标志 Y 或 N 判断当前小朋友应该分到哪个班:

  • 如果标志是Y,那么当前小朋友与前一个小朋友同班。

  • 如果标志是N,则当前小朋友与前一个小朋友不同班。

    1. 排序与输出:对于每个班的小朋友的编号,按照升序排列。并根据题目要求输出结果:
    • 若两个班的小朋友编号都不为空,按照第一个编号较小的班级先输出。
  • 若只有一个班的小朋友,则第二行输出空行。

  1. 异常处理:如果小朋友编号不在范围内,直接输出ERROR

JavaScript

const rl = require('readline').createInterface({input: process.stdin,output: process.stdout,
});var iter = rl[Symbol.asyncIterator]();const readline = async () => (await iter.next()).value;// Author: code5bug
(async () => {const input = (await readline()).split(' ').map((p) => {let [num, flag] = p.split('/');return [parseInt(num), flag];});// cls[2] 数组用于表示两个班级const cls = Array(2).fill().map(() => []);// 前一个同学所在的班级,输入是否不合法let pre = 0,err = false;input.forEach(([num, flag]) => {let idx = flag === 'Y' ? pre : pre ^ 1;cls[idx].push(num);// 输入不合法if (num <= 0 || num > 999) err = true;pre = idx;});if (err) {console.log('ERROR');} else {// 对每个班级的学生编号升序排序cls.forEach((arr) => arr.sort());let r1 = cls[0].join(' ');let r2 = cls[1].join(' ');// 编号需要按照大小升序排列,分班记录中第一个编号小的排在第一行if (r1.localeCompare(r2) > 0) {[r1, r2] = [r2, r1];}// 打印结果console.log(r1);console.log(r2);}rl.close();
})();

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

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

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

相关文章

【TCP/IP和OSI模型以及区别——理论汇总】

参考小林code和卡尔哥&#xff0c;感恩&#xff01; 网络基础篇 面试官您好&#xff01;OSI和TCP/IP是网络通信中两个关键模型&#xff0c;本质都是分层处理数据传输&#xff0c;但设计理念和应用场景差异很大。 OSI模型是理论上的七层架构&#xff0c;从下到上依次是物理层…

极客大挑战 2019 EasySQL 1(万能账号密码,SQL注入,HackBar)

题目 做法 启动靶机&#xff0c;打开给出的网址 随便输点东西进去&#xff0c;测试一下 输入1、1’、1"判断SQL语句闭合方式 输入以上两个都是以下结果 但是&#xff0c;输入1’时&#xff0c;出现的是另外结果 输入1&#xff0c;1"时&#xff0c;SQL语句没有…

Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用--简单的工作进度管理

在前期工作&#xff08;Tauri(2.5.1)Leptos(0.7.8)开发桌面应用--程序启动界面_tauri 程序启动画面-CSDN博客&#xff09;的基础上继续进行自用桌面小程序的开发。为了方便管理工作进度&#xff0c;决定自己造轮子。效果如下&#xff1a; 工作进度管理系统 在编写程序过程中&am…

java面试 网络编程与 Java I/O:技术要点解析

java面试 网络编程与 Java I/O&#xff1a;技术要点解析 网络编程与 Java I/O&#xff1a;技术要点解析一、TCP 和 UDP 的区别TCP&#xff08;Transfer Control Protocol&#xff09;UDP&#xff08;User Datagram Protocol&#xff09;TCP 的三次握手与四次挥手 二、Java 的几…

PhpStorm设置中文

环境信息 系统版本&#xff1a;Windows11 22H2 PhpStorm版本&#xff1a;2025.1.1【Build #PS-251.25410.148】 设置中文 PhpStorm并不需要安装插件或下载相应的汉化包进行汉化 依次点击点击&#xff1a; file或右上角设置按钮→ 进入Settings→ 找到Appearance & Behav…

【监控】Spring Boot 应用监控

这段配置是 Spring Boot 应用中对 Actuator 和 Micrometer 监控系统的配置&#xff0c;用于将应用的指标暴露给 Prometheus 进行收集。下面我将详细介绍这种配置方式及其提供的指标。 配置说明 这个配置主要涉及 Spring Boot Actuator 和 Micrometer 两个核心组件&#xff1a…

学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1]

学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1] 学习机器学习&#xff0c;需要学习如何预处理原始数据&#xff0c;这里用到pandas&#xff0c;将原始数据转换为张量格式的数据。 1、安装pandas pip install pandas 2、写入和读取数据 >>创建一个人工…

一台电脑联网如何共享另一台电脑?网线方式

前言 公司内网一个人只能申请一个账号和一个主机设备&#xff1b;会检测MAC地址&#xff1b;如果有两台设备&#xff0c;另一台就没有网&#xff1b;因为是联想老电脑&#xff0c;共享热点用不了&#xff0c;但是有一根网线&#xff0c;现在解决网线方式共享网络&#xff1b; …

Spring Boot 基础知识全面解析:快速构建企业级应用的核心指南

一、Spring Boot 概述&#xff1a;重新定义 Java 开发 1.1 什么是 Spring Boot&#xff1f; Spring Boot 是基于 Spring 框架的快速开发框架&#xff0c;旨在简化 Spring 应用的初始搭建及开发过程。它通过 「约定优于配置」&#xff08;Convention Over Configuration&#…

CentOS-stream-9 Zabbix的安装与配置

一、Web环境搭建部署Zabbix时&#xff0c;选择合适的MariaDB、PHP和Nginx版本非常重要&#xff0c;以确保兼容性和最佳性能。以下是建议版本&#xff1a;Zabbix 6.4 MariaDB&#xff1a;官方文档推荐使用MariaDB 10.3或更高版本。对于CentOS Stream 9&#xff0c;建议使用Maria…

CppCon 2014 学习:Adventures in Updating a Legacy Vintage Codebase

“VINTAGE” 部分是对现实中飞行模拟系统中遗留系统复杂性的描述。以下是对关键点的理解与拆解&#xff1a; 飞行模拟系统的背景 多环境、多语言、多硬件&#xff1a; 编程语言&#xff1a; 混用的“遗留语言”&#xff1a;Ada, C, C, Fortran, Jovial, PL/M, Pascal不同语言…

【计算机】计算机存储器的分类与特性

文章目录 一、按作用层次分类1. 主存储器&#xff08;内存&#xff09;2. 辅助存储器&#xff08;外存&#xff09;3. 高速缓冲存储器&#xff08;Cache&#xff09; 二、按存储介质分类1. 半导体存储器2. 磁存储技术3. 光存储发展 三、按存取方式分类1. 随机存储器技术细节2. …

Redisson - 实现延迟队列

Redisson 延迟队列 Redisson 是基于 Redis 的一款功能强大的 Java 客户端。它提供了诸如分布式锁、限流器、阻塞队列、延迟队列等高可用、高并发组件。 其中&#xff0c;RDelayedQueue 是对 Redis 数据结构的高阶封装&#xff0c;能让你将消息延迟一定时间后再进入消费队列。…

上门服务小程序订单系统框架设计

一、逻辑分析 上门服务小程序订单系统主要涉及服务展示、用户下单、订单处理、服务人员接单与服务完成反馈等核心流程。 服务展示&#xff1a;不同类型的上门服务&#xff08;如家政、维修等&#xff09;需要在小程序中展示详细信息&#xff0c;包括服务名称、价格、服务内容介…

Android apk装机编译类型: verify、speed-profile, speed与启动耗时

Android apk装机编译类型: verify、speed-profile, speed与启动耗时 Dex2oat (dalvik excutable file to optimized art file) &#xff0c;对 dex 文件进行编译优化&#xff0c;Android 虚拟机可识别的是dex文件&#xff0c;应用运行过程如果每次都将dex文件加载内存&#xff…

winrm登录失败,指定的凭据被服务器拒绝

winrm登录失败&#xff0c;指定的凭据被服务器拒绝。 异常提示&#xff1a;the specified credentials were rejected by the server 在windows power shell执行 set-executionpolicy remotesigned winrm quickconfig winrm set winrm/config/service/auth {Basic"true…

Unity3D ET框架游戏脚本系统解析

前言 ET框架在Unity3D中实现的GamePlay脚本系统是一种革命性的、基于ECS&#xff08;实体-组件-系统&#xff09;架构的设计&#xff0c;它彻底改变了传统的基于MonoBehaviour的游戏逻辑编写方式。其核心思想是追求高性能、高解耦、易热更新&#xff0c;特别适合大型复杂的网络…

android与Qt类比

一、概念对应关系 Android RecyclerView 组件类比描述Qt 模型 - 视图组件Qt 类比描述RecyclerView画板&#xff08;容器&#xff09;QAbstractItemView视图&#xff08;展示数据的容器&#xff0c;如列表、表格&#xff09;RecyclerView.Adapter画布&#xff08;数据桥梁&…

Jenkins 2.479.1安装和邮箱配置教程

1.安装 在JDK安装并设置环境变量完成后&#xff0c;下载官网对应的war版本&#xff0c;在对应目录下打开命令行窗口并输入 java -jar jenkins.war其余参数感兴趣可以自行查阅&#xff0c;这里启动的 jenkins 服务默认占用8080端口&#xff0c;在浏览器输入 localhost:8080进入…

多分辨率 LCD 的 GUI 架构设计与实现

1.1多分辨率显示系统的挑战与解决方案 1.1.1 分辨率适配的核心问题 在嵌入式系统中,同时支持不同分辨率的 LCD(如 240160、320480 等)面临以下挑战: 布局适配:同一界面元素在不同分辨率下需要调整大小和位置 字体显示:小分辨率屏幕需要更小的字体,而大分辨率需要更清…