LeetCode-in-Java

2032. Two Out of Three

Easy

Given three integer arrays nums1, nums2, and nums3, return a distinct array containing all the values that are present in at least two out of the three arrays. You may return the values in any order.

Example 1:

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

Output: [3,2]

Explanation: The values that are present in at least two arrays are:

Example 2:

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

Output: [2,3,1]

Explanation: The values that are present in at least two arrays are:

Example 3:

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

Output: []

Explanation: No value is present in at least two arrays.

Constraints:

Solution

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Solution {
    public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
        Set<Integer> ans = new HashSet<>();
        Set<Integer> set1 = new HashSet<>();
        for (int i : nums1) {
            set1.add(i);
        }
        Set<Integer> set2 = new HashSet<>();
        for (int i : nums2) {
            set2.add(i);
        }
        Set<Integer> set3 = new HashSet<>();
        for (int i : nums3) {
            set3.add(i);
        }
        for (int j : nums1) {
            if (set2.contains(j) || set3.contains(j)) {
                ans.add(j);
            }
        }
        for (int j : nums2) {
            if (set1.contains(j) || set3.contains(j)) {
                ans.add(j);
            }
        }
        for (int j : nums3) {
            if (set1.contains(j) || set2.contains(j)) {
                ans.add(j);
            }
        }
        List<Integer> result = new ArrayList<>();
        result.addAll(ans);
        return result;
    }
}