华为OD机试真题-端口合并【2023.Q1】

题目描述

有 M(1<=M<=10) 个端口组
每个端口组是长度为N(1<=N<=100)的整数数组,如果端口组间存在2个及以上不同端口相同,则认为这2个端口组 互相关联,可以合并
第一行输入端口组个数M,再输入M行,每行逗号分隔,代表端口组。输出合并后的端口组,用二维数组表示
输入描述
第一行输入一个数字M
第二行开始输入M行,每行是长度为N的整数数组,用逗号分割

输出描述
合并后的二维数组,用二维数组表示
1:组合内同端口仅保留一个,并从小到大排序。
2:组合外顺序保持输入顺序。
示例1:
输入:
4
4
2,3,2
1,2
5
输出:
[[4],[2,3],[1,2],[5]]
输入
3
2,3,1
4,3,2
5
输出
[[1,2,3,4],[5]]

解题思路

将端口组用 TreeSet存储。遍历所有端口组,并且尝试合并它们。如果两个端口组有2个及以上相同的端口,合并它们。重复此操作,直到无法合并任何端口组。

参考代码

 
 

你可能感兴趣的:(Python,JS),java,算法,开发语言,面试)