중복된 숫자를 찾아서 반환하는 문제입니다.
첫번째 배열에서 Map 에 개수를 저장해놓고
두번째 배열을 돌 때 0 초과면 반환할 List 에 넣고
중복된 숫자가 반복될 수 있으므로 Map 에서 개수를 -1 합니다.
import java.util.*;
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Map<Integer, Integer> map = new HashMap<>();
for(int num : nums1) {
int count = map.getOrDefault(num, 0);
map.put(num, count + 1);
}
List<Integer> answer = new ArrayList<>();
for(int num : nums2) {
int count = map.getOrDefault(num, 0);
if(count > 0) {
answer.add(num);
map.put(num, count - 1);
}
}
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}