`

关于数组的常见题型(交叉合并、交集、并集、插入、删除、比较)

阅读更多
public class Arrays{

//求两数组的交集,使交集重新生成一个数组

      public static int[] include(int[] a,int[] b){

             int temp=0;

             int[] arr=new int[a.length];

             for(int i=0;i<a.length;i++){

                   for(int j=0;j<b.length;j++){

                         if(a[i]==b[j]){

                        arr[temp]=a[i];

                        temp++;

           }

     }

  }

      int[] ras=new int[temp];

      for(int i=0;i<temp;i++){

      ras[i]=arr[i];

      }

      return ras;

}



//两数组交叉成一个新数组  例 int[] a={1,3,5,7,9,10};int[] b={2,4};  result: int[]c={1,2,3,4,5,7,9,10};

public static int[] merge(int[] a,int[] b){

      int[]c=new int[a.length+b.length];

      int m=0;

      int n=0; 

      for(int i=0;i<c.length;i++){

            if(i%2==0){

                         if(m>a.length-1){

                        c[i]=b[n];

                         }

                         else{

                               c[i]=a[m];

                               m++;

                         }

            }

            else{

                         if(n>b.length-1){

                                 c[i]=a[m];

                           }

                   else{

                        c[i]=b[n];

                        n++;

                         }

            } 

         }

      return c;

      }

//在数组的中间插入一个元素组成新数组

public static int[] insert(int[]arr,int x){

      int[] arrs=new int[arr.length+1];

      if(arr.length%2==0){

     for(int i=0;i<arr.length/2;i++){

                  arrs[i]=arr[i];

     }

     arrs[arr.length/2]=x;

     for(int i=arr.length/2;i<arr.length;i++){

                  arrs[i+1]=arr[i];

     }

      }else{

            for(int i=0;i<arr.length/2+1;i++){

                  arrs[i]=arr[i];

     }

     arrs[arr.length/2+1]=x;

     for(int i=arr.length/2+1;i<arr.length;i++){

           arrs[i+1]=arr[i];

     }

      }

      return arrs;

}

//删除数组的中间元素

public static int[] remove(int[] arr){

      int[] arrs=new int[arr.length-1];

      for(int i=0;i<arr.length/2;i++){

            arrs[i]=arr[i];

      }

      for(int j=arr.length/2+1;j<arr.length;j++){

            arrs[j-1]=arr[j];

      }

      return arrs;

      }

//两个数组合并成一个新的数组

public static int[] add(int[]a,int[]b){

      int[] c=new int[a.length+b.length];

      for(int i=0;i<a.length;i++){

            c[i]=a[i];

      }

      for(int j=0;j<b.length;j++){

            c[a.length+j]=b[j];

      }

      return c;

      }

//删除数组中与指定n相同的元素

public static int[] delElement(int arrs[],int n) {

      int temp=0;

      int[] arr=new int[arrs.length];

      for(int i=0;i<arrs.length;i++){

     if(arrs[i]!=n){

                  arr[temp]=arrs[i];

                  temp++;

     }

      }

      int[] ras=new int[temp];

      for(int i=0;i<ras.length;i++){

            ras[i]=arr[i];

      }

      return ras;

      }

//比较两个数组的大小

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

           int flag=0;

      if(arr1.length!=arr2.length) {

          if(arr1.length>arr2.length) {

                  flag=1;

       } else {

                  flag=2;

      }

      }else {

      for(int i=0;i<arr1.length;i++) {

            if(arr1[i]>arr2[i]) {

                  flag=1; break;

            }else if(arr1[i]<arr2[i]) {

                         flag=2;break;

                   }

             }

      }

      return flag;

      }

//取数组中<=min    >=max  的元素组成的新数组

public static int[] delElement(int arrs[],int min,int max) {

      int[]arr=new int[arrs.length];

      int temp=0;

      for(int i=0;i<arrs.length;i++){

            if(arrs[i]<=min || arrs[i]>=max){

                         arr[temp]=arrs[i];

                         temp++;

            }

       }

      int []ras=new int[temp];

      for(int i=0;i<temp;i++){

              ras[i]=arr[i];

            }

      return ras;

      }

//求两个数组的并集   如int[]arr1={1,2,3,5,8}; int[]arr2={2,5,7,8,9};  result: int[]arr={1,2,3,5,7,8,9};

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

     int[] arr3 =new int[arr1.length];

        int ai= 0;

        for(int i= 0; i<arr1.length ;i++){   //此循环求两数组相同的元素组成的新数组arr3[]

        for(int j=0; j<arr2.length;j++){

        if(arr1[i]==arr2[j]){

                 arr3[ai]=arr1[i];

                 ai++;                

                }

             }

           }         

        int[] arr4 = new int[arr2.length-ai];  

        int a4=0;

        int a3= 0;

        for(int i = 0 ;i<arr2.length; i++){         //数组arr2中除去arr3[]中得到的新数组arr4

            if(arr2[i]!=arr3[a3]){

                  arr4[a4]=arr2[i];

                  a4++;

             }else{

                  a3++;

             }

          }       

        int[] arr = new int[arr1.length+arr4.length];

        for(int i = 0 ;i<arr.length; i++){           

        if(i<arr1.length){

             arr[i]=arr1[i];

             }else{

                  arr[i]=arr4[i-arr1.length];

             }

        }  

        return arr;

}

//打印数组

public static void printArray(int[]arr){

      for(int i=0;i<arr.length;i++){

     System.out.println(arr[i]);

  }

}

}
分享到:
评论

相关推荐

    JS计算两个数组的交集、差集、并集、补集(多种实现方式)

    本文通过多种实现方式给大家介绍了JS计算两个数组的交集、差集、并集、补集 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    C#对比数组之间交集,差集,并集

    对于多个数组而言,集合操作(如交集、并集、差集)则更为常见。这些操作在数据分析、数据清洗等领域尤为重要。 #### 1.2 LINQ简介 LINQ 是一种强大的查询语言,它将查询能力引入到 C# 中。LINQ 提供了一系列的方法...

    动态数组求交集并集.rar

    利用指针来实现动态数组,求两个集合的交集和并集。(要求用动态数组来实现)依次分别输入数组A、B长度,并输入A,B中元素,即可得到交集并集

    java 求数组并集交集补集

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

    C#字符串数组求交集并集

    用C#简单实现了对字符串数组求交集并集,定义类

    求两个数组的交集、并集和差集算法分析与实现

    从数组1的尚未比较的元素中拿出第一个元素array1(i),用array1(i)与array2(j)进行比较(其中j&gt;i且j的长度),可能出现下面两种情况, 1. 数组2中找到了一个与array1(i)相等的元素,则将array2(j)与array2(i)进行...

    js取两个数组的交集|差集|并集|补集|去重示例代码|angluo-javascript-98592.pdf

    在JavaScript中,处理数组的操作是非常常见的任务,尤其是在数据处理和前端开发中。本篇将详细介绍如何使用JavaScript来获取两个数组的交集、差集、并集和补集,以及如何去除数组中的重复元素。这些操作在实际编程中...

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

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

    在matlab中连续区间 交集 和 并集

    在MATLAB中,处理连续区间的数据操作是常见的需求,特别是在数学建模、数据分析等领域。本篇文章将详细讨论如何在MATLAB中实现连续区间的交集和并集操作,以及介绍两个相关的函数——CombSet和IntSet。 首先,理解...

    实现交集和并集

    java代码实现交集,并集 求交集并集叫好用的代码.个人感觉

    MATLAB求交集和并集代码

    常见的集合运算包括交集、并集等。MATLAB作为一种广泛应用于工程计算、数值分析以及科学研究的强大工具,能够方便地实现这些集合运算。本文将详细解析如何通过MATLAB编写代码来求解两个集合的交集和并集。 #### 二...

    c++程序设计实现集合交集并集差集.pdf

    C++程序设计实现集合交集并集差集 本文主要介绍了使用 C++ 语言实现集合的交集、并集和差集运算。该程序设计了一个名为 int_set 的类,用于表示一个整数集合。该类中包含了多个成员函数,用于实现集合的基本运算,...

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

    在这个示例中,我们将深入探讨如何使用LINQ操作数组,主要包括交集、并集、差集、最值以及去重复等操作。 首先,我们来看交集(Intersect)操作。在给定的代码中,`fuck`变量存储了数组`a`和`b`的交集。`Intersect`...

    c++程序设计实现集合交集并集差集.docx

    c++程序设计实现集合交集并集差集.docx

    C# 两个datatable中的数据快速比较返回交集 并集或差集

    当我们处理多个DataTable时,可能需要比较它们之间的数据,找出交集、并集或差集。这在数据分析、数据清洗或者数据库同步等场景中非常常见。本教程将通过一个完整的源码示例,帮助初学者理解如何在C#中快速地完成这...

    一键得到交集并集差集

    彩票简单工具可用来对彩票大底进行交集处理并得出交集并集和差集

    集合运算 求并集和交集

    集合运算通常包括求并集、交集和差集等操作,这些在编程中非常常见,特别是在处理数据时。本篇文章将深入探讨如何用线性表,特别是顺序表来实现集合的求并集和交集运算。 首先,我们需要理解什么是顺序表。顺序表是...

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

    在编程领域,集合操作是常见的数据处理任务,其中包括找出多个集合的交集和并集。交集是指存在于所有集合中的元素,而并集则是指存在于至少一个集合中的所有元素。在Java中,我们可以使用多种方法来实现这些操作,...

    交集并集典型例题.doc

    交集并集典型例题

Global site tag (gtag.js) - Google Analytics