题目链接
英文链接:https://leetcode.com/problems/intersection-of-two-arrays/
中文链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/
题目详述
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
1 | 输入: nums1 = [1,2,2,1], nums2 = [2,2] |
示例 2:
1 | 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] |
说明:
- 输出结果中的每个元素一定是唯一的。
- 我们可以不考虑输出结果的顺序。
题目详解
本题是计算两个数组的交集,并且输出结果的每一个元素一定是唯一的,不考虑输出结果的顺序,有很多种解法。
方法一:运用双指针
- 先对两个数组进行排序。
- 再运用双指针遍历两个数组,将交集中的元素加入到 HashSet 中。加入到 HashSet 是为了去重。
- 最后进行转换返回。
1 | public class LeetCode_00349 { |
方法二:运用 Set 的 contanins 方法进行查找。
- 将一个数组中的元素加入到 Set。
- 在遍历另一个数组的过程中进行判断,是否将其加入交集集合中。
- 最后进行转换返回。
1 | public class LeetCode_00349 { |
方法三:运用 retainAll 对两个 set 取交集。
- List 和 Set 中均存在方法
boolean retainAll(Collection<?> c);
用来取交集。 - 可以先将两个数组转换为 Set,再对两个 Set 取交集即可。
- 最后进行转换返回。
1 | public class LeetCode_00349 { |