解题思路
取两数组交集,可以先创建两个Set集合,把两个数组放进去,去重。
接下来遍历set2,在set2中找set1是否有一样的元素,如果有相同的,
就把相同元素放入结果数组中,因为set集合中元素不重复,所以不需要删掉。
这个前提是set1比set2长,如果set2更长就反过来处理。
代码如下
public class test {
public int[] set_intersection(HashSet<Integer> set1, HashSet<Integer> set2) {
int[] output = new int[set1.size()];
int idx = 0;
for (Integer s : set1)
if (set2.contains(s))
output[idx++] = s;
return Arrays.copyOf(output, idx);
}
public int[] intersection(int[] nums1, int[] nums2) {
HashSet<Integer> set1 = new HashSet<Integer>();
for (Integer n : nums1)
set1.add(n);
HashSet<Integer> set2 = new HashSet<Integer>();
for (Integer n : nums2)
set2.add(n);
if (set1.size() < set2.size())
return set_intersection(set1, set2);
else
return set_intersection(set2, set1);
}
}