题目:
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/intersection-of-two-arrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
哈希:先遍历数组nums1,将它当中的数保存在一个无重复元素的nums1Set中,再遍历nums2,如果在nums1Set中找到相同数字,则将相同数字加入到resultSet中 ,最后再将结果转换成数组返回即可。
java代码:
1 class Solution { 2 public int[] intersection(int[] nums1, int[] nums2) { 3 HashSet<Integer> nums1Set = new HashSet<>(); 4 HashSet<Integer> resultSet = new HashSet<>(); 5 for(Integer num : nums1){ 6 nums1Set.add(num); 7 } 8 for(int i = 0; i < nums2.length; i++){ 9 if(nums1Set.contains(nums2[i])){ 10 resultSet.add(nums2[i]); 11 } 12 } 13 int[] result = new int[resultSet.size()]; 14 int index = 0; 15 for(Integer temp: resultSet){ 16 result[index++] = temp; 17 } 18 return result; 19 } 20 }
python3代码:
1 class Solution: 2 def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: 3 nums1Set = set(nums1) 4 nums2Set = set(nums2) 5 resultList = [] 6 for i in nums1Set: 7 if i in nums2Set: 8 resultList.append(i) 9 return resultList