题目:
计算两个数组的交
样例:
nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2, 2]
.
思路:
先将两数组排序,再遍历两数组,找到两数组中相同的元素。
具体代码:
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 a=0;
int b=0;
while(a<nums1.size()&&b<nums2.size()){
if(nums1[a]==nums2[b]){
v.push_back(nums1[a]);
a++;
b++;
}
if(nums1[a]<nums2[b])a++;
if(nums1[a]>nums2[b])b++;
}
return v;
}
};
感想:
一开始没有想到想将数组排序,发现如果不排序,则一个数组需要遍历多次,且找到相同元素后还需要将该元素删除来方便寻找下一个相同元素,而排序后再找交集便方便许多。