Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, return [2]
.
Note:
- Each element in the result must be unique.
- The result can be in any order.
Method I:
Use the dictionary in python to store values from nums1. Loop in nums2 to find the intersection of nums1 and nums2
class Solution(object):
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
dictionary = {}
intersection_set = []
for num1 in nums1:
if num1 in dictionary:
dictionary[num1] += 1
else:
dictionary [num1] = 1
for num2 in nums2:
if num2 in dictionary and (num2 not in intersection_set):
intersection_set.append(num2)
return intersection_set
Method II:
Use set in python
def intersection1(self, nums1,nums2):
return list(set(nums1)& set(nums2))
Method III:
Sort two lists respectively, and use pointers to find intersection
def intersection2(self, nums1, nums2):
pointer1 = 0
pointer2 = 0
nums1.sort()
nums2.sort()
intersection_set=[]
while pointer1<len(nums1) and pointer2<len(nums2):
if nums1[pointer1]<nums2[pointer2]:
pointer1 +=1
elif nums1[pointer1]>nums2[pointer2]:
pointer2 +=1
elif nums1[pointer1] not in intersection_set:
intersection_set.append(nums1[pointer1])
pointer1 +=1
pointer2 +=1
else:
pointer1 +=1
pointer2 +=1
return intersection_set
Reference :http://blog.csdn.net/coder_orz/article/details/51452615