java - java中的2个数组的联合?

标签 java arrays multidimensional-array

我的代码

class Union {

    //Search Function
    static boolean search(int A[], int i) {

        for (int k = 0; k < A.length; k++) {
            if (A[k] == i) {
                return true;
            }
        }
        return false;
    }

    //union
    static void union(int A[][], int B[][]) {

        int i = 0;
        int count = 0;
        int C[] = new int[A.length + B.length];

        for (; i < A.length; i++) {
            if (!(search(B, A[i]))) {
                C[count] = A[i];
                count++;
            }
        }

        for (; i < (A.length + B.length); i++) {
            C[count] = B[i - A.length];
            count++;
        }

        System.out.println("This is Union Of 2 D Array ");
        System.out.println();

        for (int k = 0; k < count; k++) {
            System.out.println(C[k]);
        }
        System.out.println();

    }

    public static void main(String... s) {
        union(new int[]{1, 1, 1, 4,}, new int[]{1, 4, 4, 4, 1, 2});
    }
}

我正在使用此输出来查找二维数组的并集。但我得到的输出是错误的。我不想 2 在 java 中使用任何预定义的接口(interface)和方法。 我的回答应该是 {1,2,4}

示例

A= {1,2,3,3}
B={2,3,1,1}
c={1,2,3}

最佳答案

这就是你要找的:

import java.util.Arrays;

public class Union
{

    public static void main(String[] args)
    {
        int[] A = {1, 2, 3, 3};
        int[] B = {2, 3, 1, 1};
        System.out.println(Arrays.toString(unionArrays(A, B)));
    }

    /* Union of multiple arrays */
    public static int[] unionArrays(int[]... arrays)
    {
        int maxSize = 0;
        int counter = 0;

        for(int[] array : arrays) maxSize += array.length;
        int[] accumulator = new int[maxSize];

        for(int[] array : arrays)
            for(int i : array)
                if(!isDuplicated(accumulator, counter, i))
                    accumulator[counter++] = i;

        int[] result = new int[counter];
        for(int i = 0; i < counter; i++) result[i] = accumulator[i];

        return result;
    }

    public static boolean isDuplicated(int[] array, int counter, int value)
    {
        for(int i = 0; i < counter; i++) if(array[i] == value) return true;
        return false;
    }
}

输出:

[1, 2, 3]

关于java - java中的2个数组的联合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5818057/

相关文章:

c - 移动字符串数组中的元素并用零填充

multidimensional-array - Julia 中具有未指定维度数组的定义类型

java - 扁平化多维 HashMap 以获得更好的性能?

java - 增强for循环遍历Java

java - LWJGL 端口到 android

arrays - 如何将命令输出存储到 Ansible 中的数组中?

python - 更改 dtype 时 Numpy 数组形状发生变化

C编程: Create and write 2D array of files as function

Java Finalize() 调用计数

java - 使用 Java 将 Windows 商店中的证书导出到 p12 文件