题目:
返回两个数组的交
注意事项
- Each element in the result must be unique.
- The result can be in any order.
nums1 = [1, 2, 2, 1]
, nums2 = [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>a;
map<int,int>b;
for(int j=0;j<nums2.size();j++)
{ if(b.find(nums2[j])==b.end()) {b[nums2[j]]=1;}
else b[nums2[j]]++;
}
for(int i=0;i<nums1.size();i++)
{ if(b.find(nums1[i])!=b.end()) {a.push_back(nums1[i]);b.erase(nums1[i]);}
}
return a;
}
};
感想:这道题挺简单的,代码亮点是map映射的使用。