class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Map<Integer,Integer> hash1 = new HashMap<>();
ArrayList<Integer> res = new ArrayList<>();
int l1 = nums1.length;
int l2 = nums2.length;
for( int i = 0 ; i < l1 ; i ++ ){
if( hash1.containsKey( nums1[ i ]))
hash1.put( nums1[i] , hash1.get(nums1[ i]) + 1 );
else hash1.put( nums1[ i ] , 1);
}
for( int i = 0 ; i < l2 ; i ++ ){
if( hash1.containsKey(nums2[ i ]) && hash1.get( nums2[i]) > 0 ){
hash1.put( nums2[i] , hash1.get( nums2[ i ]) - 1 );
res.add( nums2[ i ]);
}
}
int tt = res.size();
int[] rr = new int[ tt ];
for( int i = 0 ; i < tt ; i ++ )rr[ i ] = res.get( i );
return rr;
}
}
输出出现次数较少的次数,很巧妙,一次遍历+,一次遍历-,只在>0的时候输出。