자바 코딩테스트

리트코드 349 두 배열의 교집합

백엔드 개발자 2025. 4. 22. 01:22

두 개의 정수 배열 nums1과 nums2 가 주어지면 해당 배열을nums2 반환합니다.교차로. 결과의 각 요소는 고유 해야 하며, 어떤 순서 로든 결과를 반환할 수 있습니다 .

 

예시 1:

입력: nums1 = [1,2,2,1], nums2 = [2,2]
 출력: [2]
예 2:

입력: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
 출력: [9,4]
 설명: [4,9]도 허용됩니다.

 

 

 

 

중복제거 : Set을 활용한다.

2개의 교집합 처리는 retainAll을 활용해서 하나로 처리한다.

그다음 set을 int array로 변환만 시켜주면 끝나는 문제였다.


 

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
       // nums1.
        Set<Integer> set = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();
        for (int i = 0; i < nums1.length; i++) {
            set.add(nums1[i]);
        }

        for (int i = 0; i < nums2.length; i++) {
            set2.add(nums2[i]);
        }
        set.retainAll(set2);
        System.out.println(set);
        int[] res = set.stream().mapToInt(i -> i).toArray();
        return res;
    }

}