Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].Note:
Each element in the result should appear as many times as it shows in both arrays.
The result can be in any order.
这道题我的办法比较实在,就是利用两个数组进行比较,然后将第一个数组作为参照,第二个数组的某个元素如果在第一个数组能够找到,就将第二个数组的该元素删除,并放在results中,避免已经找到了该元素但还在接下来的操作中进行比较,这样会造成重复,代码如下:
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
vector<int>results;
if(!nums1.empty() && !nums2.empty()){
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
for(int i = 0; i < nums1.size(); i++){
for(vector<int>::iterator j =nums2.begin(); j!=nums2.end(); j++){
if(nums1[i] == *j){
results.push_back(nums1[i]);
j = nums2.erase(j);
break;
}
}
}
}
return results;
}
};