java - 显示两个数组中不属于两个数组的元素

标签 java arrays algorithm

我写这段代码是为了显示只属于任何一个数组的元素。我们可以提高效率吗?

public class App {
public static void main(String[] args){
    int[] a = {1,2,3,4,5,6,7,8,9};
    int[] b = {1,20,3,4,15,13,6,7,8,12};

    for(int i = 0; i < a.length; i++){
        int temp = a[i];
        for(int j = 0; j < b.length; j++){
            if(b[j] == temp){
                b[j] = -1;
                a[i] = -1;
            }
        }
        if(a[i] != -1)
            System.out.print(a[i] + " ");
    }

    for(int i = 0; i < b.length; i++){
        if(b[i] != -1)
            System.out.print(b[i] + " ");
    }
}   
}

最佳答案

是的。确实。 目前,您有一个 O(m * n),其中 m 是数组 a 的大小,n 是数组 b 的大小。
将第一个数组中的数据复制到 hashset(O(n) 操作,其中 na< 的大小)。然后,解析第二个数组,检查数据是否在 hashset 中(O(1) 操作)。
考虑对第二个数组执行相同的操作。

关于java - 显示两个数组中不属于两个数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40851539/

相关文章:

java - 在不同计算机/路径上使用的 Selenium Webdrivers

java - 在 Android 应用程序的 Java JSch 中从字符串或资源加载私钥

java - 使用 cdt eclipse 获取 C 程序的数组下标

javascript - jQuery 根据用户输入从数组中获取值

java - 编码(marshal)至 XML 时出现 FasterXML 问题

javascript - 将 JSON 数组集合发布到 Asp.net Core Web API

Javascript - 基于多个属性返回对象

在 3D 层/网格中组装节点的算法

c - bsearch 和搜索范围?

algorithm - 三边测量和定位点 (x,y,z)