返回
LeetCode 2215. 寻找两个数组的不同之处(Python)
后端
2023-12-31 09:52:59
题目
给你两个数组 nums1
和 nums2
,数组中元素均为非负整数。请你找出 nums2 中那些 未出现在 nums1 中的元素,并以数组形式返回结果。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2,1,3]
输出:[3]
示例 2:
输入:nums1 = [2,4,6,8], nums2 = [1,3,5,7]
输出:[1,3,5,7]
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
解法一:使用列表
思路:
- 首先,我们可以将
nums1
和nums2
中的元素分别保存到两个集合set1
和set2
中。 - 然后,我们可以使用集合的差集操作
set2 - set1
来求出nums2
中那些 未出现在 nums1 中的元素。 - 最后,我们将差集中的元素转换为列表并返回。
代码:
def find_difference(nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
# 将 nums1 和 nums2 中的元素分别保存到两个集合 set1 和 set2 中
set1 = set(nums1)
set2 = set(nums2)
# 使用集合的差集操作 set2 - set1 求出 nums2 中那些未出现在 nums1 中的元素
difference = set2 - set1
# 将差集中的元素转换为列表并返回
return list(difference)
解法二:使用列表
思路:
- 首先,我们可以使用
nums1
和nums2
中的元素构建一个字典dict1
,其中键是元素,值是元素出现的次数。 - 然后,我们可以遍历
nums2
中的元素,如果元素不在dict1
中或其出现次数为 0,则该元素就是我们要求的元素。 - 最后,我们将这些元素收集到列表中并返回。
代码:
def find_difference(nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
# 使用 nums1 和 nums2 中的元素构建一个字典 dict1,其中键是元素,值是元素出现的次数
dict1 = {}
for num in nums1:
if num not in dict1:
dict1[num] = 0
dict1[num] += 1
# 遍历 nums2 中的元素,如果元素不在 dict1 中或其出现次数为 0,则该元素就是我们要求的元素
difference = []
for num in nums2:
if num not in dict1 or dict1[num] == 0:
difference.append(num)
# 返回结果
return difference
总结
这道题考察了对列表和集合的基本操作,提供了两种解法,分别使用列表和集合来求解。通过这篇文章,您学习到了如何使用 Python 的列表和集合来高效地解决问题。