Java语言数组找不同,输出两个相同长度的数组,用Java语言怎么实现的

Java语言数组找不同,输出两个相同长度的数组,其中所有不同的元素,用Java语言怎么实现的?思路的原理谁知道

对数组排序,然后逐个比较两个数组的元素,根据当前比较元素的大小将所在数组下标+1:相等同时+1,不相等将小的那个+1,直到比较完这两个数组。排序可用Array.sort()方法。

【以下回答由 GPT 生成】

解决方案

要找出两个相同长度的数组中不同的元素,可以使用以下步骤:

  1. 创建两个相同长度的数组 arr1arr2,并初始化它们的元素。
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 4, 3};
  1. 声明一个空的 ArrayList 来存储不同的元素。
ArrayList<Integer> differentElements = new ArrayList<>();
  1. 使用循环遍历两个数组的元素,并将不同的元素添加到 differentElements 中。
for (int i = 0; i < arr1.length; i++) {
    if (arr1[i] != arr2[i]) {
        differentElements.add(arr1[i]);
        differentElements.add(arr2[i]);
    }
}
  1. 打印出不同的元素。
for (Integer element : differentElements) {
    System.out.println(element);
}

完整代码如下:

import java.util.ArrayList;

public class DifferentElementsFinder {
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3};
        int[] arr2 = {1, 4, 3};

        ArrayList<Integer> differentElements = new ArrayList<>();

        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] != arr2[i]) {
                differentElements.add(arr1[i]);
                differentElements.add(arr2[i]);
            }
        }

        for (Integer element : differentElements) {
            System.out.println(element);
        }
    }
}

运行以上代码,将输出不同的元素 24

注意:以上代码假设了两个数组长度相同。如果两个数组长度不同,需要先进行长度检查或者做其他处理。

如果以上解决方案不能满足你的需求,请告诉我。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

参考demo


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FindDistinctElements {
    public static void main(String[] args) {
        int[] array1 = {1, 2, 3, 4, 5};
        int[] array2 = {3, 4, 5, 6, 7};

        List<Integer> distinctElements = findDistinctElements(array1, array2);
        System.out.println("不同的元素有:" + distinctElements);
    }

    public static List<Integer> findDistinctElements(int[] array1, int[] array2) {
        Map<Integer, Integer> elementCount = new HashMap<>();

        // 统计第一个数组中的元素出现次数
        for (int i = 0; i < array1.length; i++) {
            elementCount.put(array1[i], elementCount.getOrDefault(array1[i], 0) + 1);
        }

        // 统计第二个数组中的元素出现次数,并将不同的元素添加到结果列表中
        List<Integer> distinctElements = new ArrayList<>();
        for (int i = 0; i < array2.length; i++) {
            int count = elementCount.getOrDefault(array2[i], 0);
            if (count == 0) {
                distinctElements.add(array2[i]);
            } else {
                elementCount.put(array2[i], count - 1);
            }
        }

        return distinctElements;
    }
}

如果元素都是数字好办,可以通过排序,然后从第一个开始比较