华为笔试题 – 多个数组按顺序合并(Java代码实现)

题目描述:
现在有多组整数数组,需要将他们合并成一个新的数组。合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度或者已经为空,则直接取出剩余部分的内容放到新的数组中,继续下一行。如样例1,获得长度3,先遍历第一行,获得2,5,6;再遍历第二行,获得1,7,4;再循环回到第一行,获得7,9,5;再遍历第二行,获得3,4;再回到第一行,获得7,按顺序拼接成最终结果。

输入描述:
第一行是每次读取的固定长度,长度>0;
第2-n行是需要合并的数组,不同的数组用回车换行分隔,数组内部用逗号分隔。

输出描述:
输出一个新的数组,用逗号分隔。

-------------示例---------------------------------------------------------------------------
输入
3
2,5,6,7,9,5,7
1,7,4,3,4
4,5,7,1,3,8

输出
2,5,6,1,7,4,4,5,7,7,9,5,3,4,1,3,8,7

之前在这篇博客上
华为机考笔试题 – 数组按顺序合并(Java实现)
看到过有博主分享答案,但是试着运行了一下答案是错的,就自己试着编了一下,下面是我写的代码,亲测可以通过(这个代码还可以进一步优化,优化版本的后续再更新~~)欢迎评论留言,大家共同进步!

package Shuru_lianxi;import java.util.ArrayList;
import java.util.Scanner;public class biShi {public static boolean isNull(ArrayList<String> gh) {int i = 0;for (i = 0; i < gh.size(); i++) {if (gh.get(i) != null)break;}if (i < gh.size()) {return false;} else {return true;}}public static void Alg(ArrayList<String> ma, int num) {String tem = "";// 作为最后的返回结果while (!isNull(ma)) {for (int i = 0; i < ma.size(); i++) {String sk = ma.get(i);if (sk == null) {continue;}String[] gg = sk.split(",");if (sk.length() == 0) {ma.set(i, null);// 删掉取完的内容} else {if (gg.length <= num) {tem = tem + sk + ",";ma.set(i, null);} else {for (int k = 0; k < num; k++) {tem = tem + gg[k] + ",";}String hh = "";for (int l = num; l < gg.length; l++) {if (l == gg.length - 1) {hh = hh + gg[l];} else {hh = hh + gg[l] + ",";}}// 将没取完的数组重新覆盖ma.set(i, hh);}}}}System.out.println(tem.substring(0, tem.length() - 1));}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num = sc.nextInt();ArrayList<String> ma = new ArrayList<String>();sc.nextLine();// nextInt()会留下一个回车,需要消除,否则后边会出错while (!sc.hasNext("#")) {// 以#结束,这里你可以修改成其他的ma.add(sc.nextLine());}Alg(ma, num);}
}

下面是我在Eclipse中运行的结果(附图一张)

最后,说明一点: 上面的这个解决方案的时间复杂度还是有待改进的,应该不是很优的,还有待改进和优化,后续继续改进!

欢迎同道小伙伴留言交流!
共同进步!
共同进步!
共同进步!

华为笔试题 -- 多个数组按顺序合并(Java代码实现)相关推荐

  1. 华为笔试题---明明的随机数

    题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着 ...

  2. 【leetcode】第394题:字符串解码(华为笔试题)

    题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...

  3. 2019届华为笔试题(软件卷)

    华为笔试题共3道编程题.第一题100分,第二题200分,第三题300分,一共600分. 第一题: 输入描述: 1.忽略小数点,例如"A1.2",认为包含整数1和2: 2.如果整数的 ...

  4. 2014-百度 阿里 华为笔试题

    8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面拿出来两个球:     ii.如果取出的是两 ...

  5. 华为笔试题--麻将和牌问题

    题目描述: 清一色是麻将番种之一,指由一种花色的序数牌组成的和牌. 数字1-9,每个数字最多有4张牌 我们不考虑具体花色,我们只看数字组合. 刻子:三张一样的牌:如: 111, 222, 333, . ...

  6. java打印数组的连续非空子集_Apriori算法求数组的非空子集java代码

    Apriori算法求集合的非空子集java代码 public class Test { public static void main(String[] args) { String str=&quo ...

  7. 华为笔试题总结———个公司做团建活动,排成1个M行N列的队形...请按报数顺序输出特战队员的编号列表(N*2的二维数组)

    1.题目描述 -个公司做团建活动,排成1个M行N列的队形.左上角的同事编号为(0,0),右下角的同事编号为(M-1,N-1). 为了打散队伍重新分组. 从队列左上角同事开始从1开始报数,最外圈的同事按 ...

  8. 华为笔试题———个公司做团建活动,排成1个M行N列的队形...请按报数顺序输出特战队员的编号列表(N*2的二维数组)

    目录 1题目描述 2输入输出描述 3代码实现 4不足之处 1题目描述 -个公司做团建活动,排成1个M行N列的队形.左上角的同事编号为(0,0),右下角的同事编号为(M-1,N-1). 为了打散队伍重新 ...

  9. 小米笔试题:无序数组中最小的k个数

    题目描述 链接:https://www.nowcoder.com/questionTerminal/ec2575fb877d41c9a33d9bab2694ba47?source=relative 来 ...

最新文章

  1. pytorch 状态字典:state_dict 模型和参数保存
  2. Docker容器中数据两种持久化存储方式:卷和挂载宿主目录
  3. 在Python中使用LLVM接口:llvmpy和llvmlite
  4. es写入数据的工作原理是什么啊?es查询数据的工作原理是什么啊?
  5. TKStudio-LPC1220_GPIO_LED工程后记
  6. windows phone (23) ScrollViewer元素
  7. 【Python】机器学习矩阵运算必学库Numpy首秀!
  8. git对版本文件库的管理的工作目录
  9. cup过高是什么意思_做青和焙火有什么关系?
  10. 00005在java结果输出_Java-005-运算符详解
  11. vim环境配置 +vimplus配置
  12. Codeforces Round #299 (Div. 2) D. Tavas and Malekas kmp
  13. 在plist文件中增删改查
  14. 出现“cannot identify image file /.DS_Store'”问题解决的办法
  15. 『51cto十周年庆典』社区活动大汇总
  16. 使用OpenCV需要注意的小细节
  17. 我们从UNIX之父丹尼斯身上学到了什么
  18. 从智能交通案例看物联网成功的关键
  19. 脸大脖子短,适合什么发型?
  20. 苹果硅之后:PC市场会走向何方?

热门文章

  1. matlab simulink求稳态误差ess blog,基于Simulink控制系统的稳态误差分析
  2. windows curl命令详解
  3. 学计算机装机,学习电脑装机全过程 组装台式机图解教程(4)
  4. 计算机桌面上有个搜索功能,怎么在Win7电脑桌面上搜索团队便签里的内容
  5. Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
  6. 火狐浏览器安装java插件下载_插件下载安装系列Eclipse/IDEA/谷歌/火狐安装插件
  7. C语言最大子序列和三种常用解决方法
  8. 精美的足球系列图标设计
  9. 去苹果做 AI 一共分几步?看看这套面试指南吧(附面试题)
  10. C++之 文件IO操作流