给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
思想:可用排序进行比对,时间复杂度为O(nlogn)。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> res;
int len1 = nums1.size();
int len2 = nums2.size();
int i, j;
i = j = 0;
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
while (i < len1 && j < len2)
{
if (nums1[i] == nums2[j])
{
if (!res.size() || res.back() != nums1[i])
res.push_back(nums1[i]);
i++;
j++;
}
else if (nums1[i] > nums2[j])
j++;
else if (nums1[i] < nums2[j])
i++;
}
return res;
}
};