题目
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.
思路
求两个数组的交集,一般有排序后比较和用set两种思路。
cpp
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> ret;
vector<int> one = nums1;
vector<int> two = nums2;
sort(one.begin(), one.end());
sort(two.begin(), two.end());
for (int one_index = 0, two_index = 0; one_index < one.size() && two_index < two.size();)
{
if (one[one_index] == two[two_index])
{
if(ret.empty()||ret.back()!=one[one_index])
ret.push_back(one[one_index]);
++one_index;
++two_index;
}
else
{
if (one[one_index] < two[two_index])
++one_index;
else
++two_index;
}
}
return ret;
}
};
python
class Solution(object):
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
ret=[val for val in nums1 if val in nums2]
return list(set(ret));