1 题目
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
说明:
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2 Java
有两个要点
1 去重,即除去每个数组内自身的重复元素。利用HashSet的性质
2 遍历数组1元素,判断数组2是否包含,这个过程的时间复杂度很重要。利用HashSet.contains()时间复杂度O(1)的性质
2.1 方法一(HashSet)
将输入数组转化为HashSet,用contains方法判断是否是交集元素,最后再将list转化为数组输出
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
HashSet<Integer> set1 = new HashSet<Integer>();
for(int num1: nums1) set1.add(num1);
List<Integer> list = new LinkedList<Integer>(); // 没法确定交集长度,所以先存在list中,再放到ans中
for(int num2: nums2){
if(set1.contains(num2)){
list.add(num2);
set1.remove(num2);
}
}
int[] ans = new int[list.size(