给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| /** * 题目中,输出结果是唯一的,所以自然应该想要哈希中的 set(去重) */ public int[] intersection(int[] nums1, int[] nums2) { if (nums1.length == 0 || nums2.length == 0) { return new int[0]; } Set<Integer> a = new HashSet<>(); Set<Integer> result = new HashSet<>(); for (int i : nums1) { a.add(i); } for (int i : nums2) { //如果a 包含i 则放到结果集 if (a.contains(i)) { result.add(i); } } return result.stream().mapToInt(x -> x).toArray(); }
|