https://leetcode.com/problems/intersection-of-two-arrays-ii/description/
求两个数组交集,要求包括重复元素。
思路:相比于349. Intersection of Two Arrays,此时不能再用交集来求,因为集合不包含重复元素。对两个数组排序,用两个指针i,j分别从头开始比较,较小的向前移动,直到相等,将相等的元素写入结果,直到有一个数组遍历完。
class Solution:
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
res = []
m, n = len(nums1), len(nums2)
nums1.sort()
nums2.sort()
i, j = 0, 0
while i < m and j < n:
if nums1[i] < nums2[j]:
i += 1
elif nums1[i] > nums2[j]:
j += 1
else: #若相等
res.append(nums1[i]) #写入nums2[j]也可以
i += 1
j += 1
return res