问题描述:
计算两个数组的交。
样例
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 函数。逐次比较。