华为OD机试真题(Java),数组合并(100%通过+复盘思路)

news/2025/3/14 16:57:24/

在这里插入图片描述

一、题目描述

现在有多组整数数组,需要将他们合并成一个新的数组。
合并规则从每个数组里按顺序取出固定长度的内容,合并到新的数组,取完的内容会删除掉。
如果改行不足固定长度,或者已经为空,则直接取出剩余部分的内容放到新的数组中继续下一行。

二、输入描述

第一行,每次读取的固定长度,长度0<len<10;
第二行是整数数组的数目,数目 0<num<10000;
第3~n行是需要合并的数组,不同的数组用换行分割,元素之间用逗号分割,最大不超过100个元素。

三、输出描述

输出一个新的数组,用逗号分割。

四、Java算法源码

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int len = scanner.nextInt(); // 行每次读取的固定长度int num = scanner.nextInt(); // 整数数组的数目String s = scanner.nextLine(); // nextInt后有空行,先读取一次List<List<String>> arrays = new ArrayList<>(num);int maxArrayLen = 0;int totalLen = 0;for (int i = 0; i < num; i++) {List<String> array = Arrays.stream(scanner.nextLine().split(",")).collect(Collectors.toList());arrays.add(array);totalLen += array.size();maxArrayLen = Math.max(maxArrayLen, array.size());}// 计算每个数组最多需要截取几次,即遍历次数int cycle;if (maxArrayLen % len == 0) {cycle = maxArrayLen / len;} else {cycle = maxArrayLen / len + 1;}// 拼接结果数组List<String> results = new ArrayList<>(totalLen);int start;int end;for (int i = 0; i < cycle; i++) {for (List<String> array : arrays) {start = i * len;end = (i + 1) * len;int size = array.size();// 如果开始index已经大于数组最大,说明该数组取完了if (start > size - 1) {continue;}// 结束index最大为sizeif (end > size) {end = size;}// 取指定长度的子数组results.addAll(array.subList(start, end));}}System.out.println(String.join(",", results));
}

五、效果展示

输入:

3
2
2,5,6,7,9,5,7
1,7,4,3,4

输出:

2,5,6,1,7,4,7,9,5,3,4,7

说明:

获得长度3和数组数目2
先遍历第一行 获得2,5,6
再遍历第二行 获得1,7,4
再循环回到第一行获得7,9,5
再遍历第二行获得3,4
再回到第一行获得7

在这里插入图片描述

🏆本文收录于,华为OD机试2023(Java)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/47744.html

相关文章

Axios请求(对ajax的二次封装)——Axios API、Axios实例、请求配置、Axios响应结构

axios起步——介绍和使用基本用例post请求 场景复现核心干货axios APIaxios(config)axios(url[,config])请求方式别名 axios实例创建一个axios实例axios.create([config])实例方法 axios请求配置axios响应结构 场景复现 最近学习与前端相关的小程序时&#xff0c;接触了异步请…

@爱打游戏的你,当游戏测试是什么感觉?

爱打游戏的你&#xff0c;当游戏测试是一种什么感觉&#xff1f; 去年《宝可梦朱紫》大火的那段时间&#xff0c;想必各位爱好游戏的友友们都刷到过这样的图吧&#xff1a; &#xff08;量子纠缠&#xff09; &#xff08;天怎么黑了&#xff09; &#xff08;弹簧巨怪&#x…

4-数据结构

数据结构&#xff08;data structure&#xff09; 1. 简介 数据结构是在计算机中组织与存储数据的方式 如果想要表示“一排数字”&#xff0c;自然想到使用「数组」数据结构 数组的存储方式可以表示数字的相邻关系、顺序关系&#xff0c;但至于其中存储的是整数int&#xff0c…

Python并发编程在爬虫中的应用

并发编程在爬虫中的应用 本文将为大家介绍 Python 中的多线程、多进程和异步编程&#xff0c;并且以爬取“360图片”网站的图片并保存到本地为例&#xff0c;为大家分别展示使用单线程、多线程和异步 I/O 编程的爬虫程序有什么区别&#xff0c;同时也对它们的执行效率进行简单…

非计算机专业如何转行成为程序员?我用亲身经历教你用这三种方法

哈喽大家好啊&#xff01;我想分享一下&#xff0c;非计算机专业的学生如何转行成为程序员。首先&#xff0c;我先介绍一下我的情况。我是18年毕业的&#xff0c;大学学的专业是土木工程&#xff0c;与计算机一点关系都没有。但是在大学时&#xff0c;我对程序员比较感兴趣。本…

(包教包会)最强分布式锁工具:Redisson

今天来聊聊分布式锁的最强实现&#xff1a;Redisson 从分布式锁到Redisson实现非常详细&#xff0c;适合慢慢咀嚼~ 一. Redisson概述 1.1 什么是Redisson&#xff1f; Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。…

八、vue-基础之列表渲染v-for、v-for中的key属性的作用

一、v-for列表渲染 在真实开发中&#xff0c;我们往往会从服务器拿到一组数据&#xff0c;并且需要对其进行渲染。 这个时候我们可以使用v-for来完成&#xff1b;v-for类似于JavaScript的for循环&#xff0c;可以用于遍历一组数据&#xff1b; 二、v-for基本使用 &#xff0…

4.17-4.18学习总结

MD5 MD5: 1、压缩性 2、容易计算 3、抗修改性 4、弱抗碰撞 5、强抗碰撞 为什么需要MD5&#xff1f; 存储一些敏感信息的时候&#xff0c;如果不进行加密会出现安全问题。 例如&#xff1a;系统登录的密码&#xff0c;如果数据库中的密码采用明文&#xff0c;一旦数据库泄…