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

华为OD机考算法题:分班

题目部分

题目分班
难度
题目说明幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友是否同班,请你帮忙把同班的小朋友找出来。
小朋友的编号为整数,与前一位小朋友同班用 Y 表示,不同班用 N 表示(第一位小朋友前面没人,用 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 行字符串,每条数据以空格分开。每条数据包含两部分:自己的编号 和 自己是否与前面的小朋友是否同班(使用 Y 表示同班,N 表示不同班。首位小朋友标记为 N)。

输出 2 行,每行输出一个班的小朋友编号,如果全都在一个班,第二行为空行;每行的数据按照编号从小到大输出;两行数据中,第一个编号最小的数据放在第一行。

分析与思路

此题需要考虑输入错误的情况,所以此题包含步骤:验证输入,遍历输入数据进行分班,对分班数据排序,输出数据。具体如下:
1. 验证输入。
对输入字符串,以空位为分隔符进行分割,如果无法分割出数据,则输出 ERROR。
逐个遍历分隔后的每条数据,对每条数据,继续以 "/" 进行分割,如果无法分割出数据,则输出 ERROR。对于分割后的数据,如果 "/" 之前的数据不是数字,则输出 ERROR;如果 "/" 之后的数据不是 "Y" 或 "N",则输出 "N"。首条数据的 "/" 之后为 "N"。
2. 遍历输入数据进行分班。
新建 2 个数组,把第一条数据编号放到第一个数组中,如果第二条数据的 "/" 之后是 "Y",则放到与前一条数据相同的数组,否则放到第二个数组。
逐条遍历数据,对于每条数据,如果 "/" 是 "Y",则把这条数据的编号放到与前面一条数据相同的数组中,否则放到另外一条数组中。
3. 对分班数据排序。
对数组中的数据从小到大排序。
4. 输出数据。
如果其中一个数组为空,则输出其中一个数组,另外一个空行。
如果两个数组均不为空,则判断两个数组的第一个元素大小,先输出第一个元素较小的数组。

因涉及到排序,时间复杂度为 O(nlogn),空间复杂度为 O(n)。


代码实现

Java代码

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;/*** 篮球比赛* * @since 2023.09.15* @version 0.1* @author Frank**/
public class ClassCheck {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String input = sc.nextLine();processClassCheck(input);}}private static void processClassCheck(String input) {String[] kidsInfoStr = input.split(" ");if (kidsInfoStr == null || kidsInfoStr.length == 0) {System.out.println("ERROR");return;}List<Integer>[] classInfo = new ArrayList[2];classInfo[0] = new ArrayList<Integer>();classInfo[1] = new ArrayList<Integer>();int curClass = 1;for (int i = 0; i < kidsInfoStr.length; i++) {String eachRecord = kidsInfoStr[i];String[] recordDetail = eachRecord.split("/");if (recordDetail == null || recordDetail.length != 2) {System.out.println("ERROR");return;}int num;try {num = Integer.parseInt(recordDetail[0]);} catch (NumberFormatException e) {System.out.println("ERROR");return;}if ("Y".equals(recordDetail[1])) {classInfo[curClass].add(num);} else if ("N".equals(recordDetail[1])) {curClass ^= 1;classInfo[curClass].add(num);} else {System.out.println("ERROR");return;}}Collections.sort(classInfo[0]);Collections.sort(classInfo[1]);if (classInfo[1].size() > 0 && classInfo[1].get(0) < classInfo[0].get(0)) {List tmp = classInfo[0];classInfo[0] = classInfo[1];classInfo[1] = tmp;}for (int i = 0; i < classInfo.length; i++) {if (classInfo[i].size() == 0) {// 如果为 0,一定是第二个System.out.println();break;}for (int j = 0; j < classInfo[i].size(); j++) {System.out.print(classInfo[i].get(j));if (j != classInfo[i].size() - 1) {System.out.print(" ");} else {System.out.println();}}}}}

JavaScript代码

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function() {while (line = await readline()) {processClassCheck(line);}
}();function processClassCheck(input) {var kidsInfoStr = input.split(" ");if (kidsInfoStr == null || kidsInfoStr.length == 0) {console.log("ERROR");return;}var classInfo = new Array(2);classInfo[0] = new Array();classInfo[1] = new Array();var curClass = 1;for (var i = 0; i < kidsInfoStr.length; i++) {var eachRecord = kidsInfoStr[i];var recordDetail = eachRecord.split("/");if (recordDetail == null || recordDetail.length != 2) {console.log("ERROR");return;}if (isNaN(recordDetail[0]) ) {console.log("ERROR");return;}var num = parseInt(recordDetail[0]);if ("Y" == recordDetail[1]) {classInfo[curClass].push(num);} else if ("N" == recordDetail[1]) {curClass ^= 1;classInfo[curClass].push(num);} else {console.log("ERROR");return;}}var sortFun = function(a,b){return a - b;}classInfo[0].sort( sortFun );classInfo[1].sort( sortFun );if (classInfo[1].length > 0 && classInfo[1][0] < classInfo[0][0]) {var tmp = classInfo[0];classInfo[0] = classInfo[1];classInfo[1] = tmp;}for (var i = 0; i < classInfo.length; i++) {if (classInfo[i].length == 0) {// 如果为 0,一定是第二个console.log("");break;}var output = "";for (var j = 0; j < classInfo[i].length; j++) {output += classInfo[i][j] ;if (j != classInfo[i].length - 1) {output += " ";}}console.log( output );}
}

(完)

相关文章:

华为OD机考算法题:分班

题目部分 题目分班难度易题目说明幼儿园两个班的小朋友在排队时混在了一起&#xff0c;每位小朋友都知道自己是否与前面一位小朋友是否同班&#xff0c;请你帮忙把同班的小朋友找出来。 小朋友的编号为整数&#xff0c;与前一位小朋友同班用 Y 表示&#xff0c;不同班用 N 表示…...

【gcc】RtpTransportControllerSend学习笔记 3:gcc

本文是大神 https://www.cnblogs.com/ishen 的文章的学习笔记。大神的webrtc源码分析(8)-拥塞控制(上)-码率预估 详尽而具体,堪称神作。本文使用的代码是m79 ,与大神有不同。2.4 Probe只会在一些特殊的时候才会进行探测(链路刚开始时, 码率不正常暴跌时)2.5 : 对发送的吞吐量…...

CSP-J第二轮试题-2019年-3题

文章目录 参考&#xff1a;总结 [CSP-J2019] 纪念品题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案 现场真题注意事项 参考&#xff1a; P5662 CSP-J2019纪念品 总结 本系列为CSP-J/S算法竞赛真题讲解&#xff0c;会按照年…...

数据库:Hive转Presto(三)

继续上节代码。 import re import os import tkinter.filedialog from tkinter import *class Hive2Presto:def __int__(self):self.t_funcs [substr, nvl, substring, unix_timestamp] \[to_date, concat, sum, avg, abs, year, month, ceiling, floor]self.time_funcs [d…...

【AI视野·今日Robot 机器人论文速览 第四十八期】Thu, 5 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 5 Oct 2023 Totally 32 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers LanguageMPC: Large Language Models as Decision Makers for Autonomous Driving Authors Hao Sha, Yao Mu, Yuxuan Jiang, Li…...

学信息系统项目管理师第4版系列20_风险管理

1. 针对不确定性的应对方法 1.1. 【高23上选58】 1.2. 收集信息 1.2.1. 可以对信息收集和分析工作进行规划&#xff0c;以便发现更多信息&#xff08;如进行研究、争取专家参与或进行市场分析&#xff09;来减少不确定性 1.3. 为多种结果做好准备 1.3.1. 制定可用的解决方…...

卷积神经网络的发展历史-VGG

VGG的产生 2014 年&#xff0c;Simonyan和Zisserman提出了VGG系列模型&#xff08;包括VGG-11/VGG-13/VGG-16/VGG-19&#xff09;&#xff0c;并在当年的ImageNet Challenge上作为分类任务第二名、定位&#xff08;Localization&#xff09;任务第一名的基础网络出现。 VGG的…...

qt解决信号和槽连接时传递额外参数的问题

解决信号和槽连接时传递额外参数的问题 QSignalMapper 是 Qt 框架中的一个类&#xff0c;用于解决信号和槽连接时传递额外参数的问题。当一个信号被触发时&#xff0c;QSignalMapper 可以将该信号与一个特定的参数关联起来&#xff0c;并将信号与对应的槽函数进行连接。 下面…...

『力扣每日一题14』:消失的数字

昨天忙过头&#xff0c;等想起来已经 12 点多了&#xff0c;于是乎断更了。在这里先跟广大读者说声抱歉&#xff0c;并且稍后我会再更一篇。 一、题目 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&…...

【b站韩顺平 快速学Java课】Java的JDK8(包括公共JRE8)安装教程 总结

最近开始学Java&#xff0c;如果是程序员的话要使用Java——需要安装JDK。 不同操作系统&#xff08;Win/Linux/Mac&#xff09;——需要安装不同的JDK。 1.JDK安装官网链接&#xff1a; Java Downloads | Oracle 我的电脑是win x64,以下笔记总结就暂且以本人电脑操作系统版本…...

Spark 弹性分布式数据集 RDD

1.RDD简介 `RDD` 全称为 Resilient Distributed Datasets,是 Spark 最基本的数据抽象,它是只读的、分区记录的集合,支持并行操作,可以由外部数据集或其他 RDD 转换而来,它具有以下特性: 一个 RDD 由一个或者多个分区(Partitions)组成。对于 RDD 来说,每个分区会被一个…...

电脑被删除的文件怎么恢复?2023年数据恢复方法分享

大多数人在使用电脑时都可能会遇到误删文件的情况。一不小心&#xff0c;重要的文件或数据就消失了&#xff0c;情急之下&#xff0c;大多会感到慌乱和无助。但其实&#xff0c;文件误删除并非不可挽回的灾难。本文将为大家介绍几种有效的文件恢复方法&#xff0c;以帮助大家在…...

李宏毅 2022机器学习 HW3 boss baseline 上分记录

作业数据是所有数据都有标签的版本。 李宏毅 2022机器学习 HW3 boss baseline 上分记录 1. 训练数据增强2. cross validation&ensemble3. test dataset augmentation4. resnet 1. 训练数据增强 结论&#xff1a;训练数据增强、更长时间的训练、dropout都证明很有效果&…...

SpringBatch适配不同数据库的两种方法

一、配置JobRepository Configuration EnableBatchProcessing public class TaskArrangeConfig extends DefaultBatchConfigurer {Autowiredprivate DataSource dataSource;Autowiredprivate JobLauncher jobLauncher;Autowiredprivate JobExplorer jobExplorer;Autowiredpriv…...

【ARM CoreLink 系列 5 -- CI-700 控制器介绍 】

文章目录 1.1 什么是 CI-700?1.1.1 关于 CI-7001.1.2 CI-700 特点1.2 全局配置参数1.2.1 寻址能力1.3 组件和配置1.3.1 CI-700 互联的结构1.3.2 Crosspoint(XP)1.3.3 外部接口1.4 组件(Components)1.1 什么是 CI-700? CI-700是一种AMBA 5 CHI互连,具有可定制的网状拓扑结构…...

找不到msvcp140_1.dll怎么办,快速解决msvcp140_1.dll问题的方法分享

在日常使用计算机的过程中&#xff0c;经常会遇到一些程序无法正常运行的问题&#xff0c;其中最常见的就是“msvcp140_1.dll丢失”。这是一个典型的DLL文件丢失问题&#xff0c;但背后的原因却往往并不简单。通过深入研究这个问题&#xff0c;我对其有了更深入的理解。 首先&a…...

华为云云耀云服务器L实例评测|部署私有网盘 Nextcloud

华为云云耀云服务器L实例评测&#xff5c;部署私有网盘 Nextcloud 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 应用场景 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Nextcloud3.1 Nextcloud 介绍3.2 Docker 环境搭建3.3 Nex…...

vue3中使用插件vite-plugin-svg-icons

在vue3 vite 项目中使用svg图标 插件&#xff1a;vite-plugin-svg-icons 预加载 在项目运行时就生成所有图标,只需操作一次 dom高性能 内置缓存,仅当文件被修改时才会重新生成 安装 yarn add vite-plugin-svg-icons -D # or npm i vite-plugin-svg-icons -D # or pnpm inst…...

面试题20231008

前端 2023年前端面试题汇总-CSDN博客 后端 1.Java基础 容器、线程等等 a.JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a;Java Development Kit 的简称&#xff0c;Java 开发工具包&#xff0c;提供了 Java 的开发环境和运行环境。 JRE&#xff1a;Java Runtime Envir…...

2023全新小红书图集和视频解析去水印网站源码

2023全新小红书图集和视频解析去水印网站源码 小红书视频图集解析网站源码&#xff0c;在红书看到好看的图片以及好看的头像&#xff0c;但是直接下载又有水印就非常难受&#xff0c;这个可以一键解析去除水印&#xff0c;支持统计解析次数&#xff0c;本地接口。 源码下载&a…...

2023去水印小程序源码修复版-前端后端内置接口+第三方接口

去水印小程序源码&#xff0c;前端后端&#xff0c;内置接口第三方接口&#xff0c;修复数据库账号密码错误问题&#xff0c;内置接口支持替换第三方接口&#xff0c;看了一下文件挺全的&#xff0c;可以添加流量主代码&#xff0c;搭建需要准备一台服务器&#xff0c;备案域名…...

鸿蒙手表开发之使用adb命令安装线上包

#国庆发生的那些事儿# 鸿蒙手表开发之使用adb命令安装线上包 前言&#xff1a; 由于之前的哥们匆忙离职了&#xff0c;所以鸿蒙手表项目的新版本我临时接过来打包发布&#xff0c;基本上之前没有啥鸿蒙经验&#xff0c;但是一直是做Android开发的&#xff0c;在工作人员的指…...

华为OD机试 - 计算最大乘积(2022Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…...

安卓RecycleView包含SeekBar点击列表底部圆形阴影处理

seekbar在列表中点击底部圆形阴影禁止显示方法 大家好&#xff0c;最近写了自定义的seekbar实现显示进度值&#xff0c;然而呢&#xff0c;我的seekbar控件是作为recycleview的item来使用的&#xff0c;我设置了禁止点击和滑动方法如下&#xff1a; seekBar.setOnTouchListene…...

计算机视觉中的可解释性分析

计算机视觉中的可解释性分析是指通过不同的方法和技术来解释和理解深度学习模型对图像或视频数据的预测和决策过程。这是一个非常重要的领域&#xff0c;因为深度学习模型通常被认为是“黑盒子”&#xff0c;很难理解其内部工作原理。可解释性分析的目标是提供对模型决策的更好…...

Python 爬虫报错分析

在使用requests库进行网络连接时出现了 ConnectionError: (Connection aborted., RemoteDisconnected(Remote end closed connection without response)) 这个错误。这个错误通常发生在以下几种情况&#xff1a; 目标服务器无法访问&#xff1a;可能由于服务器宕机、网络故障…...

[python 刷题] 3 Longest Substring Without Repeating Characters

[python 刷题] 3 Longest Substring Without Repeating Characters 题目&#xff1a; Given a string s, find the length of the longest substring without repeating characters. 这到提要求找的是最长的&#xff0c;没有重复符号的子字符串 解题思路是用双指针哈希表&…...

阿里云轻量应用服务器流量价格表(计费/免费说明)

阿里云轻量应用服务器套餐有的限制月流量&#xff0c;有的不限制月流量&#xff0c;限制每月流量的套餐&#xff0c;如果自带的免费月流量包用完了&#xff0c;流量超额部分需要另外支付流量费&#xff0c;阿里云百科aliyunbaike.com分享阿里云轻量应用服务器月流量超额收费价格…...

C++设计模式-装饰器(Decorator)

目录 C设计模式-装饰器&#xff08;Decorator&#xff09; 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-装饰器&#xff08;Decorator&#xff09; 一、意图 动态地给一个对象添加一些额外的职责。就增加功能来说&#xff0c;Decorator模式相比生成子…...

【C语言】结构类型的定义和使用

目录 1.结构体&#xff08;struct&#xff09;类型 2.结构标记 3.typedef 4.定义结构数组的方法 5.调用结构数组的方法 6.将结构体传入函数 7.结构体使用实例 1.结构体&#xff08;struct&#xff09;类型 在C语言中&#xff0c;结构体&#xff08;struct&#xf…...

网站备案拍照 广州/怎么查百度搜索排名

新一代可重构ERP系统(转)新一代可重构ERP系统网络化时代&#xff0c;企业对传统ERP提出了新的要求&#xff0c;新一代ERP应运而生&#xff0c;本文简要介绍新一代ERP的发展趋势&#xff0c;同时详细介绍天剑新一代可重构ERP的内容、特点、技术架构、关键技术、系统实现方法和实…...

网站三大要素是什么意思/自助友链平台

JAVA面经复习&#xff08;十&#xff09; 面试难度:☆☆☆☆ 问&#xff1a;String s new String&#xff08;“abc”&#xff09;创建了几个对象? 答&#xff1a;2个&#xff0c;在JVM中存在着一个字符串池&#xff0c;其中保存着很多String对象&#xff0c;并且可以被共…...

网站建设公司谁家好/百度搜索关键词优化

今天突然注意到$ls -l显示文件时&#xff0c;权限列后面有个点。如&#xff1a;-rw-rw-r--. 1 user group 13767 12月 25 2014 index.html解释&#xff1a;开启了SELinux功能的Linux系统才会有这个点。那个点表示文件带有“SELinux的安全上下文”。CentOS7默认是开启SELinux的&…...

网站友情链接模板/在线数据分析工具

并没有人动到/etc/my.cnf这个配置,可能有人动到了权限相关表... 问题: mysql连接时错误信息:Cant get hostname for your address 即navicat就连不上. 原因不必找了,解决问题: [mysqld] skip-name-resolve #加上这一个属性后重启mysql服务就可以了. /etc/init.d/mysql resta…...

合肥网站建设需要多/武威网站seo

《UltraSR Spatial Encoding is a Missing Key for Implicit Image Function-based Arbitrary-Scale Super-Resolution》&#xff08;说明&#xff1a;如果您认为下面的文章对您有帮助&#xff0c;请您花费一秒时间点击一下最底部的广告以此来激励本人创作&#xff0c;谢谢!!!&…...

黄埭网站建设/西安网站制作价格

增加字段语法&#xff1a;alter table tablename add (column datatype [default value][null/not null],….); 说明&#xff1a;alter table 表名 add (字段名 字段类型 默认值 是否为空); 例&#xff1a;alter table sf_users add (HeadPIC blob); 例&#xff1a;alter table…...