给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4]
说明:
- 输出结果中的每个元素一定是唯一的。
- 我们可以不考虑输出结果的顺序。
class Solution
{
public:
vector<int> intersection(vector<int> &nums1, vector<int> &nums2)
{
// 对数组1进行排序
sort(nums1.begin(), nums1.end());
// 对数组2进行排序
sort(nums2.begin(), nums2.end());
vector<int> result;
int mark;
// 对排序后的数组1与数组2进行比较,输出最终的交集结果
for (int i = 0, j = 0; i < nums1.size() && j < nums2.size(); )
{
if (nums1[i] < nums2[j])
i++;
else if (nums1[i] > nums2[j])
j++;
else if (nums1[i] == nums2[j])
{
if (result.size() == 0 || nums1[i] != mark)
{
result.push_back(nums1[i]);
mark = nums1[i];
}
i++;
j++;
}
}
return result;
}
};