상세 컨텐츠

본문 제목

2215. Find the Difference of Two Arrays

LeetCode

by 10002s 2023. 10. 29. 00:34

본문

Find the Difference of Two Arrays - LeetCode

주어진 두 개의 정수 배열 nums1 및 nums2에 대해 다음을 반환합니다:
- answer[0]: nums1에만 있고 nums2에 없는 모든 고유한 정수 목록.
- answer[1]: nums2에만 있고 nums1에 없는 모든 고유한 정수 목록.

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.

 

Example 1:

Input: nums1 = [1,2,3], nums2 = [2,4,6]
Output: [[1,3],[4,6]]
Explanation:
For nums1, nums1[1] = 2 is present at index 0 of nums2, whereas nums1[0] = 1 and nums1[2] = 3 are not present in nums2. Therefore, answer[0] = [1,3].
For nums2, nums2[0] = 2 is present at index 1 of nums1, whereas nums2[1] = 4 and nums2[2] = 6 are not present in nums2. Therefore, answer[1] = [4,6].

Example 2:

Input: nums1 = [1,2,3,3], nums2 = [1,1,2,2]
Output: [[3],[]]
Explanation:
For nums1, nums1[2] and nums1[3] are not present in nums2. Since nums1[2] == nums1[3], their value is only included once and answer[0] = [3].
Every integer in nums2 is present in nums1. Therefore, answer[1] = [].

 

문제 요약: 

두 배열 간의 고유한 정수를 찾아내어 각 배열에서 서로 다른 정수 목록을 반환해야 합니다.

풀이과정:
  1. 각 배열의 중복을 제거하기 위해 HashSet를 사용하여 nums1 및 nums2의 모든 값에 대한 집합을 생성합니다.
  2. 각 배열을 반복하면서 집합에 있는지 확인하고 두 배열 간의 차이를 찾습니다.
  3. 찾은 차이를 diff1 및 diff2 리스트에 추가합니다.
  4. 두 목록을 반환하는 2D 목록인 result에 추가하고 반환합니다.

이렇게 하면 두 배열의 서로 다른 정수를 찾을 수 있습니다.

class Solution {
    public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
        List<List<Integer>> retList = new ArrayList<List<Integer>>();
       
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();

        for(int no : nums1) {
            set1.add(no);
        }

        for(int no : nums2) {
            set2.add(no);
        }
       
        List<Integer> list1 = new ArrayList<>();
        List<Integer> list2 = new ArrayList<>();
        for(int no1 : set1) {
            if(!set2.contains(no1)) {
                list1.add(no1);
            }
        }
        for(int no2 : set2) {
            if(!set1.contains(no2)) {
                list2.add(no2);
            }
        }
        retList.add(list1);
        retList.add(list2);
       

        return retList;

    }
}

 

반응형

'LeetCode' 카테고리의 다른 글

199. Binary Tree Right Side View  (0) 2023.10.29
1207. Unique Number of Occurrences  (0) 2023.10.29
1448. Count Good Nodes in Binary Tree  (0) 2023.10.26
872. Leaf-Similar Trees  (0) 2023.10.26
104. Maximum Depth of Binary Tree  (0) 2023.10.26

관련글 더보기