找出两数组的不同
easy
给你两个下标从
0
开始的整数数组nums1
和nums2
,请你返回一个长度为2
的列表answer
,其中:
answer[0]
是nums1
中所有 不 存在于nums2
中的 不同 整数组成的列表。answer[1]
是nums2
中所有 不 存在于nums1
中的 不同 整数组成的列表。**注意:**列表中的整数可以按 任意 顺序返回。
示例 1:
输入:nums1 = [1,2,3], nums2 = [2,4,6] 输出:[[1,3],[4,6]] 解释: 对于 nums1 ,nums1[1] = 2 出现在 nums2 中下标 0 处,然而 nums1[0] = 1 和 nums1[2] = 3 没有出现在 nums2 中。因此,answer[0] = [1,3]。 对于 nums2 ,nums2[0] = 2 出现在 nums1 中下标 1 处,然而 nums2[1] = 4 和 nums2[2] = 6 没有出现在 nums2 中。因此,answer[1] = [4,6]。
示例 2:
输入:nums1 = [1,2,3,3], nums2 = [1,1,2,2] 输出:[[3],[]] 解释: 对于 nums1 ,nums1[2] 和 nums1[3] 没有出现在 nums2 中。由于 nums1[2] == nums1[3] ,二者的值只需要在 answer[0] 中出现一次,故 answer[0] = [3]。 nums2 中的每个整数都在 nums1 中出现,因此,answer[1] = [] 。
哈希集合
python
class Solution:
def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
nums1 = set(nums1)
nums2 = set(nums2)
same_num = nums1 & nums2
return [list(nums1 - same_num), list(nums2 - same_num)]
递归
python
class Solution(object):
def findDifference(self, nums1, nums2):
se1, se2 = set(nums1), set(nums2) # 使用集合去重
answer = [list(se1 - se2), list(se2 - se1)]
return answer
字典(效率低)
python
class Solution:
def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
dict1 = {}
dict2 = {}
for i, n in enumerate(nums1):
if n not in nums2:
dict1[n] = i
for i, n in enumerate(nums2):
if n not in nums1:
dict2[n] = i
return [list(dict1.keys()), list(dict2.keys())]