`

Java数组的交集、并集

 
阅读更多

// 求两个数组的交集
public static int[] SameOfTwoArrays(int[] arr1, int[] arr2) {
  // 新建一个空数组,用于存储交集,空数组长度应该为两个数组中最小的。
  int temp[] = new int[arr1.length < arr2.length ? arr1.length : arr2.length];
  // 定义一个int的变量,初始值为0;用于交集数组的自增添加元素
  int k = 0;
  // 第一层for循环的作用是:遍历获取两个数组中的某一个元素。如果从效率上来处理,应该遍历较短的那个数组
  for (int i = 0; i < arr1.length; i++) {
    // 第二层for循环,遍历获取另一个数组的元素
    for (int j = 0; j < arr2.length; j++) {
      // 把两个数组中遍历出来的元素进行比较
      if (arr1[i] == arr2[j]) {
        // 如果两个元素相等,就存入交集数组中,交集数组的index需要自增长,以便存放下一个相等元素
        temp[k++] = arr1[i];
        // 把第二层循环中的当前找到的与第一层循环相等的元素位置存放如数组最后一个元素
        arr2[j] = arr2[arr2.length - 1];
        // 删除最后一个元素
        arr2 = Arrays.copyOf(arr2, arr2.length - 1);
        // 结束本次内循环
        break;
      }
    }
  }
  return Arrays.copyOf(temp, k);
}

// 求两个数组的并集

public static int[] mergeArrays(int[] arr1, int[] arr2) {

  // 新建一个空数组,用于存储交集,空数组长度应该为两个数组的长度之和。
  int[] temp = new int[arr1.length + arr2.length];

  //将两个数组拷贝到temp数组
  System.arraycopy(arr1, 0, temp, 0, arr1.length);
  System.arraycopy(arr2, 0, temp, arr1.length, arr2.length);

  //第一层循环,遍历到第一个数组的最后
  for (int i = 0; i < arr1.length; i++) {

    //第二层循环,从第二个数组开始遍历
    for (int j = arr1.length; j < temp.length; j++) {

      //如果第二个数组的元素等于第一个数组的元素,就删除第二个数组的该元素
      if (temp[i] == temp[j]) {

        //将第二个数组的元素放到temp数组的最后
        temp[j] = temp[temp.length - 1];

        //删除最后一个元素
        temp = Arrays.copyOf(temp, temp.length - 1);
        break;
      }
    }
  }
  Arrays.sort(temp);
  return temp;
}

分享到:
评论

相关推荐

    java 求数组并集交集补集

    利用java 语言,实现数组的并集交集补集,数组可键入。

    java数组求交集,并集,差集

    求java数组的交集,并集,差集 实现方法简单但很实用

    实现多个集合的交集,并集

    下面将详细介绍如何在Java中实现多个数组的交集和并集。 首先,让我们从交集开始。假设我们有多个数组,例如`array1`, `array2`, `array3`等,我们想要找出它们共有的元素。一个简单的实现方式是先将这些数组合并为...

    java jsonarray 踢重 去重操作

    在Java中处理JSON数据时,经常需要对JSON数组进行各种操作,其中去重是一个常见的需求。本文将详细介绍如何使用Java对`JSONArray`进行去重操作,并深入探讨背后的原理和技术细节。 ### JSON与Java JSON...

    Leecode初级算法_数组篇_实例

    例如,你可能会遇到查找数组中的最大值、最小值、特定元素,或者是两个数组的交集、并集等。这些题目对于理解数组的基本特性和操作非常有帮助,同时也训练了程序员的逻辑思维能力。 在Java中,处理数组时可以使用...

    取两个集合的交集

    通过分析给定的示例代码,我们了解到一种计算字符串数组交集的具体实现方法。在实际开发中,根据具体的业务需求选择合适的算法是非常重要的。希望本文能够帮助读者更好地理解和掌握集合的相关知识。

    模糊匹配算法java实现

    在Java中,可以通过遍历两个集合并计算交集和并集来实现。 3. **余弦相似度**:在多维空间中衡量两个向量之间的角度,适用于高维数据。可以先将字符串转化为词频向量,然后使用Java的`java.util.Math.cos()`计算两...

    Coding:解决编码问题

    用于两个已排序数组的交集和并集的程序。 IntersectionUnion.java 数组 程序查找两个二进制数组中最长的跨度和。 LongestSpan.java 链表 链接列表创建代码。 LinkedListCreation.java 链表 链接列表插入代码。...

    leetcode中国-DSA:该存储库包含GeeksforGeeks数据结构和算法解决方案

    找出两个已排序数组的并集和交集。 数组 || 编写一个程序,将数组循环旋转一个。 数组 || 找到最大和连续子数组 [V. 输入法] 数组 || 最小化高度之间的最大差异 [V.IMP] 数组 || 最低数量到达数组末尾的跳转次数 ...

    义一个整数集合类integerSet。这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个整型数组存储数据。编程:

    - 功能描述:此方法用于找出当前对象`c`数组与传入的整型数组`b`的交集,并打印出交集中的元素。 - 实现思路:遍历数组`c`,对于每个元素,再次遍历数组`b`,检查是否存在相同的元素。若存在,则打印该元素。 3. ...

    java贪吃蛇源码-450-Coding-Questions-LoveBabbar::fire:该存储库包含由@loveBabbar策划的DSACrac

    找出两个已排序数组的并集和交集。 &lt;-&gt; 大批 编写一个程序,将数组循环旋转一个。 &lt;-&gt; 大批 找到最大和连续子数组 [V. 输入法] &lt;-&gt; 大批 最小化高度之间的最大差异 [V.IMP] &lt;-&gt; 大批 最低数量到达数组...

    javalruleetcode-DSA_450_Questions:DSA_450_问题

    找出两个已排序数组的并集和交集。 &lt;-&gt; 数组 编写一个程序,将数组循环旋转一个。 &lt;-&gt; 数组查找最大和连续子数组 [V. IMP] &lt;-&gt; 数组最小化高度之间的最大差异 [V.IMP] &lt;-&gt; 阵列最小数量到达数组末尾的...

    java集合的运算.pdf

    在本实验报告中,学生陆蒙蒙通过Java语言实现了基于数组的集合运算,包括交集、并集和差集的计算。 1. **交集**: 实现交集的方法`methodJiaoji`采用两层循环,遍历第一个数组`arrayFirst`的每个元素,并与第二个...

    java课程设计报告收集.pdf

    问题描述是实现两个集合(A和B)的交集、并集和差集运算,并输出结果。集合元素可以是字母、整数或字符串,它们的大小和长度由数组表示。设计中需要定义数组存储集合元素,构造方法处理运算,并输出运算结果。算法...

    javalruleetcode-DSA:动态安全协议

    找出两个已排序数组的并集和交集。 &lt;-&gt; 大批 编写一个程序,将数组循环旋转一个。 &lt;-&gt; 大批 找到最大和连续子数组 [V. 输入法] &lt;-&gt; 大批 最小化高度之间的最大差异 [V.IMP] &lt;-&gt; 大批 最低数量到达数组...

    Java实验九:解决问题讲解(排序,数组,添加,删除的应用)

    6. **交集与并集**:交集是同时存在于两个数组中的元素,通过遍历两个已排序数组,找到相同的元素并打印。并集是两个数组的所有元素,包括重复的,也通过遍历和复制数组实现,并在最后进行一次冒泡排序确保并集也是...

    java中关于集合的操作

    - **并集、交集、差集**:`union()`, `intersection()`, `difference()`分别对应集合的并、交、差操作。 6. **泛型**: 泛型允许在集合中声明和使用特定类型的元素,提高代码安全性和可读性。 7. **并发集合**:...

    java代码-TwoArray

    在Java中,处理两个数组常见的任务包括合并、比较、排序、查找交集、并集等。以下是一些可能涉及的知识点: 1. **数组创建和初始化**:在Java中,可以使用`int[] array = new int[5]`来创建一个包含5个元素的整型...

Global site tag (gtag.js) - Google Analytics