Easy
Intersection of Multiple Arrays — Python
Full explanation · Time O(n * l + r) · Space O(l)
# Time: O(n * l + r), n = len(nums), l = len(nums[0])
# Space: O(r), r = max(nums)-min(nums)
# freq table, counting sort
class Solution(object):
def intersection(self, nums):
"""
:type nums: List[List[int]]
:rtype: List[int]
"""
MAX_NUM = 1000
cnt = [0]*(MAX_NUM+1)
for num in nums:
for x in num:
cnt[x] += 1
return [i for i in xrange(1, MAX_NUM+1) if cnt[i] == len(nums)]
# Time: O(n * l + r), n = len(nums), l = len(nums[0]), r = max(nums)-min(nums)
# Space: O(l)
# hash table, counting sort
class Solution2(object):
def intersection(self, nums):
"""
:type nums: List[List[int]]
:rtype: List[int]
"""
result = set(nums[0])
for i in xrange(1, len(nums)):
result = set(x for x in nums[i] if x in result)
return [i for i in xrange(min(result), max(result)+1) if i in result] if result else []
# Time: O(n * l + llogl), n = len(nums), l = len(nums[0])
# Space: O(l)
# hash table, sort
class Solution3(object):
def intersection(self, nums):
"""
:type nums: List[List[int]]
:rtype: List[int]
"""
result = set(nums[0])
for i in xrange(1, len(nums)):
result = set(x for x in nums[i] if x in result)
return sorted(result)