我试图找到由两个数组联合形成的数组的长度。我可以打印出这样的union元素,但不知道如何获取union数组的长度。有什么想法吗?
可以计算我的union数组的可变长度吗?
int[] array1={1,3,2,5};
int[] array2={4,5,1,3,2};
int m = array1.length, n = array2.length, k = array1.length, i = 0, flag = 0;
int c[] = new int[m + n];
int d[] = new int[m];
for (i = 0; i < m; i++) {
c[i] = array1[i];
}
for (i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (array2[i] != array1[j]) {
flag = 1;
} else {
flag = 0;
break;
}
}
if (flag == 1) {
c[k] = array2[i];
k++;
}
}
int count = 1;
for (i = 0; i < k - 1; i++) {
count++;
}
int p = 0;
for (i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (array2[i] == array1[j]) {
flag = 1;
break;
} else {
flag = 0;
}
}
if (flag == 1) {
d[p] = array2[i];
p++;
}
}
System.out.println("The length of the union array is: " + count);
答案 0 :(得分:2)
计数应为k + m
而不是k
。所以只需替换:
for (i = 0; i < k - 1; i++)
与
for (i = 0; i < k + m - 1; i++)
更好的解决方案是将k + m
分配给count
并打印出来。像这样:
count = k + m;
System.out.println("count is " + count);
答案 1 :(得分:2)
如果您想要一个唯一的计数,请使用Set
:
Set<Integer> set = new HashSet<>();
set.addAll(Arrays.asList(array1));
set.addAll(Arrays.asList(array2));
count = set.size();