数组并集有多种在线解决方案,我自己想出了一个,它工作得很好,但也有很大的时间复杂性(显然我不知道)。所以为了更好地使用类似的逻辑,我在这里问。任何建议都是很好的!
最初有两个arrayList,大小和编号都不同。
1.第一步是将它们都追加到一个List中
1.第二步是使用**Collections.sort()方法对新数组进行排序。
1.第三种方法是使用.remove()**删除其中的重复项。
- //初始两个数组 *
数组1 [0,2,3,4,5]和数组2 [0,1,2,3,5,7,8]
- //for循环将它们追加到一个arrayList中并排序 *
for(k = 0; k< array1.size();k++){
array3.add(array1.get(k));
}
for(k = 0; k< array2.size();k++){
array3.add(array2.get(k));
}
Collections.sort(array3);
- //现在删除重复项 *
for(k=0; k<array3.size();k++){
if(k != array3.size()-1){
if(Objects.equals(array3.get(k), array3.get(k + 1))){
array3.remove(k);
}
}
}
2条答案
按热度按时间fdx2calv1#
您可以通过散列集以最佳方式完成此操作
该解决方案不能保证并集中元素的顺序。
vof42yt12#
一个月
您可以使用
distinct()
操作来获得给定数组的并集,该操作在底层维护LinkedHashSet
以保证元素的唯一性并保持其顺序: