


可以使用 集合 (set) 来高效解决这个问题,因为集合支持 O(1) 的查找复杂度。具体思路如下:
- 使用 set 存储 nums1 和 nums2,去重并方便查找。
- 计算两个集合的差集:
set(nums1) - set(nums2)得到只存在于nums1中的元素。set(nums2) - set(nums1)得到只存在于nums2中的元素。
- 返回结果。
代码实现如下:
def findDifference(nums1, nums2):
set1, set2 = set(nums1), set(nums2)
return [list(set1 - set2), list(set2 - set1)]
# 测试用例
print(findDifference([1,2,3], [2,4,6])) # 输出: [[1,3],[4,6]]
print(findDifference([1,2,3,3], [1,1,2,2])) # 输出: [[3], []]
复杂度分析:
- 时间复杂度:O(m + n),其中 m 和 n 是
nums1和nums2的长度,转换为集合的时间是 O(m) 和 O(n),计算差集的时间也是 O(m) 和 O(n)。 - 空间复杂度:O(m + n),用于存储两个集合。
这种方法高效简洁,并且利用了集合的去重特性,避免了额外的遍历操作。
443

被折叠的 条评论
为什么被折叠?



