
😎풀이
- 빈도를 저장하는
frequentMap
선언
- 반드시 배열은
nums1
이 nums2
보다 짧게 변경
nums2
를 순회하며 빈도 저장
nums1
을 순회하며 교집합에 대해 저장
- 저장된 교집합
result
반환
function intersect(nums1: number[], nums2: number[]): number[] {
const result: number[] = []
const frequentMap = new Map<number, number>()
if(nums1.length > nums2.length) [nums1, nums2] = [nums2, nums1]
for(const num of nums2) frequentMap.set(num, (frequentMap.get(num) ?? 0) + 1)
for(const num of nums1) {
if(!frequentMap.has(num)) continue
if(frequentMap.get(num) <= 0) continue
frequentMap.set(num, frequentMap.get(num) - 1)
result.push(num)
}
return result
};