问题描述:
计算两个数组的交。
样例
nums1 = [1, 2, 2, 1],
nums2 = [2, 2], 返回 [2,
2].
现将两个数组进行排序,首先将两数组的第一个元素进行比较,如果相等就加入到动态数组中,两数组的下标同时后移一位,否则哪个数组的元素较小,哪个数组的下标就往后移动一位。
代码:
class Solution {
public:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// Write your code here
vector<int> v;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
int i=0;int j=0;
while(i<nums1.size()&&j<nums2.size()){
if(nums1[i]==nums2[j]) {
v.push_back(nums1[i]);
i++;j++;
}
else {if(nums1[i]>nums2[j]) {
j++;
}
else i++;
}
}
return v;
}
};
感想:
利用sort 函数。逐次比较。
本文介绍了一种计算两个整数数组交集的方法。通过先对两个数组进行排序,然后逐个比较元素并收集相同元素的方式得到交集。文章还提供了一个C++实现示例。
469

被折叠的 条评论
为什么被折叠?



