넘치게 채우기

[LeetCode] 2215. Find the Difference of Two Arrays 본문

PS/LeetCode

[LeetCode] 2215. Find the Difference of Two Arrays

riveroverflow 2023. 5. 3. 10:31
728x90
반응형

https://leetcode.com/problems/find-the-difference-of-two-arrays/description/

 

Find the Difference of Two Arrays - LeetCode

Can you solve this real interview question? Find the Difference of Two Arrays - Given two 0-indexed integer arrays nums1 and nums2, return a list answer of size 2 where: * answer[0] is a list of all distinct integers in nums1 which are not present in nums2

leetcode.com

문제 유형 : 해시 테이블

문제 난이도 : Easy

 

문제

Given two 0-indexed integer arrays nums1 and nums2, return a list answer of size 2 where:

  • answer[0] is a list of all distinct integers in nums1 which are not present in nums2.
  • answer[1] is a list of all distinct integers in nums2 which are not present in nums1.

Note that the integers in the lists may be returned in any order.

 

0-인덱스의 int 배열 nums1과 nums2가 있는데, 다음의 2차원배열을 출력하라:

answer[0]에는 nums1에만 있는 수가 있어야하고,

answer[1]에는 nums2에만 있는 수가 있어야한다.

 

+ 반환되는 수들의 순서는 고려하지 않는다.

 

입력

배열 nums1, nums2를 받는다

 

 

출력

2차원 배열 answer를 조건에 맞게 반환한다.

 

 

풀이

c++에서 제공하는 unordered_set로 시간복잡도를 줄인다. 그리고 count함수를 이용해서 상대 배열에 값이 있는지 구하면 된다.

파이썬에서도 set를 이용하면 되고, set1 - set2를 하면 set1에만 있는 수만 남아서(차집합) 쉽고 깔끔하게 구할 수 있다.

 

 

코드(C++)

class Solution {
public:
    vector<vector<int>> findDifference(vector<int>& nums1, vector<int>& nums2) {
    	vector<vector<int>> answer(2, vector<int>()):
    
        unordered_set<int> set1(nums1.begin(), nums1.end());
        unordered_set<int> set2(nums2.begin(), nums2.end());

        for (int num : set1) {
            if (!set2.count(num)) {
                answer.at(0).push_back(num);
            }
        }

        for (int num : set2) {
            if (!set1.count(num)) {
                answer.at(1).push_back(num);
            }
        }

        return answer;
    }
};
728x90
반응형