题目链接: https://leetcode.com/problems/intersection-of-two-arrays/
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.
思路: 简单hashtable, 先把一个数组放到hashtable中, 然后查另外一个数组, 如果碰到相同的就加入结果集合, 并且删除其hashtable.
代码如下:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int, bool> hash;
vector<int> result;
for(auto val: nums1) hash[val] = true;
for(auto val: nums2)
if(hash.count(val))
{
result.push_back(val);
hash.erase(val);
}
return result;
}
};
python
class Solution(object):
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
ans = []
dic = {}
for val in nums1:
dic[val] = True
for val in nums2:
if dic.has_key(val):
del dic[val]
ans.append(val)
return ans
class Solution(object):
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
return list(set(nums1) & set(nums2))