哈希表 03

79 阅读1分钟

LeetCode 349

原题链接

解题思路

取两数组交集,可以先创建两个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);
	}
}