Java數組的交集、並集,java數組交集

來源:互聯網
上載者:User

Java數組的交集、並集,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;
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.