找到联合数组的长度

时间:2017-12-24 09:53:07

标签: java arrays union

我试图找到由两个数组联合形成的数组的长度。我可以打印出这样的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);

2 个答案:

答案 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();