import collections
class Solution(object):
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
nums1.sort()
nums2.sort()
i, j = 0, 0
res = []
while i < len(nums1) and j < len(nums2):
if nums1[i] == nums2[j]:
res.append(nums1[i])
i += 1
j += 1
elif nums1[i] < nums2[j]:
i += 1
else:
j += 1
return res
class Solution(object):
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
nums2_count = collections.Counter(nums2)
res = []
for num in nums1:
if num in nums2_count and nums2_count[num] > 0:
res.append(num)
nums2_count[num] -= 1
return res
res = Solution().intersect([1],[1])
print(res) # [1]
res = Solution().intersect([1,2,2,1],[2,2])
print(res) # [2,2]
# follow up 2
# What if nums1's size is small compared to nums2's size? Which algorithm is better?
# put all elements of nums2 into a hashmap, iterate through nums1 to get intersection
# follow up 3
# What if elements of nums2 are stored on disk, and the memory is
# limited such that you cannot load all elements into the memory at
# once?
# If only nums2 cannot fit in memory, put all elements of nums1 into a HashMap, read chunks of array that fit into the memory, and record the intersections.
# If both nums1 and nums2 are so huge that neither fit into the memory, sort them individually (external sort), then read 2 elements from each array at a time in memory, record intersections.
LC-350 Intersection of Two Arrays II
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Intersection of Two Arrays IIGiven two arrays, write a fu...
- Given two arrays, write a function to compute their inter...
- 在朋友圈看到一位研究生学姐发起筹款。她妈妈之前患抑郁,症状改善后,又诊断出患白血病。 与这位学姐平时没有深入交流,...