Easy Difficulty 7 収集と共有 英語に切り替えて動的なフィードバックを受け取ります
0
先頭から始まる添字を 持つ 2 つの整数配列を指定すると nums1
、 length の リスト nums2
を返します 。ここで、2
answer
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};
}
};
他の集合演算が見つかった場合は、さらに追加してください。