LeetCode - 349. Intersection of Two Arrays(Array, HashTable, Two Pointers, Binary Search, Sorting)*

YAMAMAMO·2022년 2월 25일
0

LeetCode

목록 보기
32/100

문제

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

https://leetcode.com/problems/intersection-of-two-arrays/

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.

풀이

자바입니다.

  • nums1을 HashSet에 넣는다.
  • HashSet contains()를 사용해서 nums2에 있는 값이 HashSet에 있는지 확인한다.
  • ArrayList에 추가한다. HashSet의 값은 삭제한다.(삭제하지 않으면 중복되는 값이 생긴다.)
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> hash = new HashSet<>();
        ArrayList<Integer> list = new ArrayList<>();
        for(int i:nums1){
            hash.add(i);
        }
        for(int i:nums2){
            if(hash.contains(i)){
                hash.remove(i);
                list.add(i);
            }
        }
        
        int[] res = new int[list.size()];
        for(int i=0;i<list.size();i++){
            res[i]=list.get(i);
        }
        return res;
    }
}
profile
안드로이드 개발자

0개의 댓글