// 求两个数组的交集
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数组的交集、并集的更多相关文章

  1. (java/javascript) list 交集 并集 差集 去重复并集

    java list 交集 并集 差集 去重复并集 package com; import java.util.ArrayList; import java.util.Iterator; import ...

  2. 【转】 js数组 Array 交集 并集 差集 去重

    原文:http://blog.csdn.net/ma_jiang/article/details/52672762 最劲项目需要用到js数组去重和交集的一些运算,我的数组元素个数可能到达1000以上, ...

  3. LINQ操作数组(交集,并集,差集,最值,平均,去重复)

    数组是大学里经常拿来做算法练习的对象.一些经典算法非常有价值,考试.装逼.面试都十分有用.但现在是效率时代,编程讲究生产效率,利用LINQ,可以让程序猿避免写一些基本算法,把精力花在业务处理上. 下面 ...

  4. js求对象数组的交集/并集/差集/去重

    1.求交集 var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}]; var arr1Id = [1,2,3] ...

  5. js求两个数组的交集|并集|差集|去重

    let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合)  a-b = [1,3] (b-a 差集:属于b但不属于a的集合)  b-a = [4 ...

  6. python [] 数组 list 交集 并集 差集

    >>> a = [1,2,3] >>> b = [2,4,5] >>> list(set(a).intersection(set(b))) [2] ...

  7. java用最少循环求两个数组的交集、差集、并集

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

  8. C# 数组的交集、差集、并集

    C# 数组的交集.差集.并集 工作中经常会用这方面的知识来检查那些字段是必须输入的,那些是禁止输入. using System; using System.Collections.Generic; u ...

  9. 求两个排序数组的交集和并集----时间复杂度O(n+m)

    问题: 给你两个排序的数组,求两个数组的交集. 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5,n是a数组大小,m是b数组大小. 思路: (1)从b数组遍历取 ...

随机推荐

  1. poj 2585 Window Pains 暴力枚举排列

    题意: 在4*4的格子中有9个窗体,窗体会覆盖它之下的窗体,问是否存在一个窗体放置的顺序使得最后的结果与输入同样. 分析: 在数据规模较小且不须要剪枝的情况下能够暴力(思路清晰代码简单),暴力一般分为 ...

  2. web.xml中的ServletContextListener

    要想了解ServletContextListener,先看看web.xml中的<listener>配置. 一)web.xml中的内容载入顺序: 首先能够肯定的是,载入顺序与它们在 web. ...

  3. Vue实例及生命周期

    1,Vue实例生命周期. 有时候,我们需要在实例创建过程中进行一些初始化的工作,以帮助我们完成项目中更复杂更丰富的需求,开发,针对这样的需求,Vue提供给我们一系列的钩子函数 2,Vue生命周期的阶段 ...

  4. python和python3

    1 安装python和python3的方法 如果是python,那么直接python setup.py install; 如果是python3,那么直接python3 setup.py install ...

  5. maximize_window fullscreen_window minimize_window

    # Licensed to the Software Freedom Conservancy (SFC) under one# or more contributor license agreemen ...

  6. Cron Expression

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTr ...

  7. WebService_使用三要素

    一.Java中WebService规范 JAVA 中共有三种WebService 规范,分别是JAX-WS.JAX-RS.JAXM&SAAJ(废弃). 1.JAX-WS规范 JAX-WS 的全 ...

  8. Fresco-Facebook的图片加载框架的使用

    目前常用的开源图片加载框架有:1.Universal-Image-Loader,该项目存在于Github上面https://github.com/nostra13/Android-Universal- ...

  9. BZOJ_4177_Mike的农场_最小割

    BZOJ_4177_Mike的农场_最小割 Description Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不 ...

  10. 【转】Vuex 学习总结

    对于很多新手来说,只是阅读文档是不好消化,我的建议是看看 vuex 的实例,通过研究实例来学习vuex.这样就会好理解多了.如果还是不能理解,最好办法就是先把store 的四个属性:state, ge ...