[LeetCode] Intersetion of Two Arrays II

아르당·2026년 1월 5일

LeetCode

목록 보기
75/94
post-thumbnail

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

Problem

두 개의 정수 배열 nums1와 nums2가 주어졌을 때, 두 배열의 교집합을 배열로 반환해라. 결과 배열의 각 요소는 두 배열 모두에 동일한 횟수만큼 나타나야 하고, 순서는 상관없다.

Example

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

#2
Input: nums1 = [4, 9, 5], nums2 = [9, 4, 9, 8, 4]
Output: [4, 9]
Explanation: [9, 4] 또한 받아드려진다.

Constraints

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

Solved

class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        int n1 = nums1.length;
        int n2 = nums2.length;
        int i = 0;
        int j = 0;
        int k = 0;

        Arrays.sort(nums1);
        Arrays.sort(nums2);

        while(i < n1 && j < n2){
            if(nums1[i] < nums2[j]) i++;
            else if(nums1[i] > nums2[j]) j++;
            else{
                nums1[k++] = nums1[i++];
                j++;
            }
        }

        return Arrays.copyOfRange(nums1, 0, k);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글