人生には終わりがありません。質問に答えるのをやめることはできません。簡単な質問から知識ポイントを学びましょう

2215. 2 つの配列の違いを見つける

Easy Difficulty 7 収集と共有 英語に切り替えて動的なフィードバックを受け取ります

0 先頭から始まる添字を 持つ 2 つの整数配列を指定すると nums1 、  length の リスト nums2 を返します  。ここで、2answer

  • answer[0]は、に存在し  ない、  の nums1 すべての個別の整数 のリスト です 。nums2
  • answer[1]は、に存在し  ない、  の nums2 すべての個別の整数 のリスト です 。nums1

注:リスト内の整数は、 任意の 順序で返すことができます。

例 1:

入力: nums1 = [1,2,3]、nums2 = [2,4,6]
出力: [[1,3],[4,6]]
説明:
 nums1 の場合、nums1[1] = 2 が nums2 に表示されます。ただし、添字 0 では、nums1[0] = 1 および nums1[2] = 3 は nums2 に現れません。したがって、答え[0] = [1,3]となります。
nums2 の場合、nums2[0] = 2 は nums1 のインデックス 1 に表示されますが、nums2[1] = 4 および nums2[2] = 6 は nums2 に表示されません。したがって、答え[1] = [4,6]となります。

例 2:

入力: nums1 = [1,2,3,3]、nums2 = [1,1,2,2]
出力: [[3],[]]
説明:
 nums1 の場合、nums1[2] と nums1[3] は次のようになります。 not nums2 に表示されます。nums1[2] == nums1[3] なので、2 つの値はanswer[0] に 1 回だけ出現する必要があるため、answer[0] = [3] となります。
nums2 のすべての整数は nums1 に出現するため、answer[1] = [] となります。

ヒント:

  • 1 <= nums1.length, nums2.length <= 1000
  • -1000 <= nums1[i], nums2[i] <= 1000

パス数: 10,795 提出数: 16,126

解決策: 質問では多くのことが述べられていますが、実際には 2 つのセットの違いです。これは C++ で実装されており、直接呼び出すことができます。

class Solution {
public:
    vector<vector<int>> findDifference(vector<int>& nums1, vector<int>& nums2) {
         set<int> s1(nums1.begin(), nums1.end());
        set<int> s2(nums2.begin(), nums2.end());
        vector<int> v1, v2;
        set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), back_inserter(v1));
        set_difference(s2.begin(), s2.end(), s1.begin(), s1.end(), back_inserter(v2));
        return {v1, v2};
    }
};

他の集合演算が見つかった場合は、さらに追加してください。

おすすめ

転載: blog.csdn.net/weixin_41579872/article/details/126054379