两个数组的交集Ⅱ

要求:

给定两个数组,写一个方法来计算它们的交集。

示例:

给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].

分析:

先对两个数组由小到大排序,用两个指针index1和index2遍历两个数组,比较对应元素的大小,如果相等,则添加进result数组,如果不相等,元素小的数组指针加一,最终其中一个数组遍历结束,就停止程序。

代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution:
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
result = []
nums1.sort()
nums2.sort()
index1, index2 = 0, 0
n1, n2 = len(nums1), len(nums2)

while index1 < n1 and index2 < n2:
if nums1[index1] == nums2[index2]:
result.append(nums1[index1])
index1 += 1
index2 += 1
elif nums1[index1] > nums2[index2]:
index2 += 1
else:
index1 += 1
return result
参考资料:

1、两数组的交 II https://blog.csdn.net/guoziqing506/article/details/51569488


两个数组的交集Ⅱ
https://xiepeng21.cn/posts/8ed9ffc/
作者
Peng Xie
发布于
2018年7月18日
许可协议