[LeetCode] Two Out of Three

아르당·2026년 7월 30일

LeetCode

목록 보기
435/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

3개의 배열 nums1, nums2, nums3이 주어졌을 때, 3개의 배열에서 적어도 2곳에 포함된 모든 값을 포함하고 중복 없는 배열을 반환해라. 값의 순서는 상관없다.

Example

#1
Input: nums1 = [1, 1, 3, 2], nums2 = [2, 3], nums3 = [3]
Output: [3, 2]

#2
Input: nums1 = [3, 1], nums2 = [2, 3], nums3 = [1, 2]
Output: [2, 3, 1]

#3
Input: nums1 = [1, 2, 2], nums2 = [4, 3, 3], nums3 = [5]
Output: []

Constraints

  • 1 <= nums1.length, nums2.length, nums3.length <= 100
  • 1 <= nums1[i], nums2[j], nums3[k] <= 100

Solved

class Solution {
    public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
        HashSet<Integer> hs1 = new HashSet<>();
        HashSet<Integer> hs2 = new HashSet<>();
        HashSet<Integer> hs3 = new HashSet<>();
        HashSet<Integer> all = new HashSet<>();

        for(int num : nums1){
            hs1.add(num);
            all.add(num);
        }

        for(int num : nums2){
            hs2.add(num);
            all.add(num);
        }

        for(int num : nums3){
            hs3.add(num);
            all.add(num);
        }

        ArrayList<Integer> result = new ArrayList<>();

        for(int num : all){
            int count = 0;

            if(hs1.contains(num)){
                count++;
            }

            if(hs2.contains(num)){
                count++;
            }

            if(hs3.contains(num)){
                count++;
            }

            if(count > 1){
                result.add(num);
            }
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글