350. Intersection of Two Arrays II & Add to List 349. Intersection of Two Arraysノート

1657 ワード

  • Intersection of Two Arrays II 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. 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;
        }
    };
    
  • Intersection of Two Arraysと上の違いは、重複する要素が1回しか出力されないことです.2番目の配列を巡るときは、これを出力してハッシュ表のこの数の値を0にすればいいのです.コードは次のとおりです:
  • 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;
            }
    };