华为OD E卷(100分)38-数组拼接
前言
工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。
题目描述
现在有多组整数数组,需要将它们合并成一个新的数组。合并规则如下:
- 从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉。
- 如果该行不足固定长度或者已经为空,则直接取出剩余部分的内容放到新的数组中,继续下一行。
输入
- 第一行是每次读取的固定长度L,满足 0<L<10。
- 第二行是整数数组的数目N,满足 0<N<1000。
- 第 3 到第 N+2 行是需要合并的数组,不同的数组用回车换行分隔,数组内部用逗号分隔,每个数组最多不超过 100 个元素。
输出
输出一个新的数组,用逗号分隔。
示例
示例1
输入
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
说明
1、获得长度3和数组数目2
2、先遍历第一行,获得2,5,6
3、再遍历第二行,获得1,7,4
4、再循环回到第一行,获得7,9,5
5、再遍历第二行,获得3,4
6、再回到第一行,获得7,按顺序拼接成最终结果
示例2
输入
4
3
1,2,3,4,5,6
1,2,3
1,2,3,4
输出1,2,3,4,1,2,3,1,2,3,4,5,6
说明
种第7棵树,最多连续胡杨树棵数位6(5,6,7,8,9,10)
示例3
输入
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
说明
输入用例中的数组存在空元素,需要过滤掉空串
数据范围
0<L<10
0<N<1000
每个数组最多不超过 100 个元素
解题思路
使用List存储,每个对象为String数组,且为去除为空的。
循环遍历每个数组并取L长度的值,直到结尾为止。读完的从List中去除,直到List为空为止。
题解
Java实现
package huawei.e100;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
/**
* @author YangShun
* @date 2024年12月24日
* 数组拼接
*/
public class T38 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int l = sc.nextInt();
int n = sc.nextInt();
sc.nextLine();
List<String[]> data = new ArrayList<>();
for (int i = 0; i < n; i++) {
String[] tmp = sc.nextLine().split(",");
// 数组去除空数据 并添加到列表中
data.add(Arrays.stream(tmp).filter(str-> str.trim().length()>0).toArray(String[]::new));
}
List<String> res = run(data, l);
System.out.println(String.join(",", res));
}
}
static List<String> run(List<String[]> data, int l) {
List<String> res = new ArrayList<>();
int time = 0;
// 循环取值,直到列表为空为止
while(data.size()> 0) {
Iterator<String[]> it = data.iterator();
while(it.hasNext()) {
String[] d = it.next();
if(l*time >= d.length) {
it.remove(); // 取完的数组从列表中删除
} else {
// 每次从数组中取l个数,遇到结束退出
for (int i = l*time; i < d.length && i < l*time + l; i++) {
res.add(d[i]);
}
}
}
time ++;
}
return res;
}
}
原文地址:https://blog.csdn.net/arnold66/article/details/144708239
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!