思路:
使用两个容量为1001的数组哈希表分别存储两个给定数组内数字的出现情况,出现为1,反之为0。
然后通过两个hash数组同位置值之和是否大于1来确定两个给定数组的交集元素,计算结果数组的长度
最后存储。
代码如下
public class 两个数组的交集 {
public static int[] intersection( int[] nums1 , int[] nums2 ){
int[] hash1 = new int[1001] ;
int[] hash2 = new int[1001] ;
for( int i = 0 ; i < nums1.length ; i++ ){
hash1[nums1[i]] = 1 ;
}
for( int i = 0 ; i < nums2.length ; i++ ){
hash2[nums2[i]] = 1 ;
}
int length = 0 ;
for( int i = 0 ; i <= 1000 ; i++ ){
if( hash1[i] + hash2[i] > 1 ){
length++;
}
}
int[] result = new int[length] ;
int index = 0 ;
for( int i = 0 ; i <= 1000 ; i++ ){
if( hash1[i] + hash2[i] > 1 ){
result[index++] = i ;
}
}
return result ;
}
}