문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
두 개의 정수 배열 nums1와 nums2가 주어졌을 때, 두 배열의 교집합을 배열로 반환해라. 결과 배열의 각 요소는 두 배열 모두에 동일한 횟수만큼 나타나야 하고, 순서는 상관없다.
#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] 또한 받아드려진다.
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);
}
}