问题:假设两个含有N个元素的有序整型数组a,和b,如何得到他们的交集。
方法1,可以用二路归并法。分别从头开始遍历两个数组,比较对应的数值,如果相同就放到一个list中。
package Array; import java.util.*; /** * Created by Administrator on 2017/10/1. */ public class JiaoJi { public static ArrayList<Integer> mixed(int array1[] ,int array2[]){ ArrayList<Integer> mix = new ArrayList<Integer>(); int i=0,j=0; int n1=array1.length; int n2=array2.length; while(i<n1&&j<n2){ if(array1[i]==array2[j]){ mix.add(array1[i]); i++; j++; } else if(array1[i]>array2[j]){ j++; }else{ i++; } } return mix; } public static void main(String[] args){ int[] a={0,1,2,3,4}; int[] b={1,3,5,7,9}; ArrayList<Integer> mix=mixed(a,b); for(int i=0;i<mix.size();i++){ System.out.print((mix.get(i)+" ")); } } }方法2,顺序遍历数组,将数组元素存到哈希表中,同时统计数组元素,若为2,则为交集元素。