[LeetCode] 350. Intersection of Two Arrays II

Chobby·2025년 3월 25일
1

LeetCode

목록 보기
308/429

😎풀이

  1. 빈도를 저장하는 frequentMap 선언
  2. 반드시 배열은 nums1nums2보다 짧게 변경
  3. nums2를 순회하며 빈도 저장
  4. nums1을 순회하며 교집합에 대해 저장
  5. 저장된 교집합 result 반환
function intersect(nums1: number[], nums2: number[]): number[] {
    const result: number[] = []
    const frequentMap = new Map<number, number>()
    // nums1의 길이가 반드시 더 짧게
    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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글

Powered by GraphCDN, the GraphQL CDN