代码:
public int[] intersection(int[] nums1, int[] nums2) { int index = 0; Set<Integer> set = new HashSet<>(); Set<Integer> setResult = new HashSet<>(); if (nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0){ return null; } for (int i:nums1){ set.add(i); } for (int i:nums2){ if (set.contains(i)){ setResult.add(i); } } int[] numResult = new int[setResult.size()]; for(int i:setResult){ numResult[index++] = i; } return numResult; }
解题思路:本题适合set,因为set无序不可重复,而交集恰好符合这一点,所以把nums1的元素添加到set中,然后再通过遍历nums2和set.contains(i)这个方法判断nums2中的元素是否在set中,如果在,说明是交集中的元素,添加到setResult中(这里为什么不用数组呢,因为我们并不知道交集的元素有多少个,无法定义数组长度。),之后再遍历setResult中的元素,把元素添加到数组中,最后返回数组。