350. Intersection of Two Arrays II & Add to List 349. Intersection of Two Arraysノート
1657 ワード
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. 2つの配列の共通要素を返し、同じものが複数ある場合は複数を返します.1つのハッシュテーブルで1番目の配列の各数の個数を統計し、2番目の配列を巡り、ハッシュテーブルの中に結果が保存され、ハッシュテーブルの中のこの数の個数を1つ減らします.コードは次のとおりです.
class Solution {
public:
vector intersect(vector& nums1, vector& nums2) {
unordered_map m;
vector res;
for(int i = 0; i < nums1.size(); i++)
{
m[nums1[i]]++;
}
for(int i = 0; i < nums2.size(); i++)
{
m[nums2[i]]--;
if(m[nums2[i]] >= 0)
res.push_back(nums2[i]);
}
return res;
}
};
class Solution {
public:
vector intersection(vector& nums1, vector& nums2) {
unordered_map m;
vector res;
for(int i = 0; i < nums1.size(); i++)
{
m[nums1[i]]++;
}
for(int i = 0; i < nums2.size(); i++)
{
m[nums2[i]]--;
if(m[nums2[i]] >= 0)
{
res.push_back(nums2[i]);
m[nums2[i]] = 0;
}
}
return res;
}
};