[LeetCode] 349 Intersection of Two Arrays

황은하·2021년 5월 14일
0

알고리즘

목록 보기
33/100
post-thumbnail

Description

Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must be unique and you may return the result in any order.

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
Explanation: [4,9] is also accepted.

Constraints:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

풀이

중복된 숫자를 출력시키는 문제.
두 배열을 각각 해시맵에 넣어서 길이가 짧은 배열 속 원소가 길이가 긴 배열에 속하는지 확인하여 겹치는 숫자만 출력시켰다.


코드

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        int[] result;
        int index = 0;
        ArrayList<Integer> list = new ArrayList<>();
        
        HashMap<Integer, Integer> map1 = new HashMap<>();
        for (int i : nums1) {
            map1.put(i, 0);
        }

        HashMap<Integer, Integer> map2 = new HashMap<>();
        for (int i : nums2) {
            map2.put(i, 0);
        }

        if (map1.size() < map2.size()) {
            Iterator it = map1.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry entry = (Map.Entry) it.next();
                if (map2.containsKey(entry.getKey())) {
                    list.add((Integer) entry.getKey());
                }
            }
        } else {
            Iterator it = map2.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry entry = (Map.Entry) it.next();
                if (map1.containsKey(entry.getKey())) {
                    list.add((Integer) entry.getKey());
                }
            }
        }

        result = new int[list.size()];
        for (int i : list) {
            result[index++] = i;
        }
        return result;
    }
}
profile
차근차근 하나씩

0개의 댓글