알고리즘풀이

LeetCode: Intersection of Two Arrays II

batterflyyin 2021. 3. 31. 11:55

문제설명

  • 두 정수 배열, nums1와 nums2가 주어졌을 때, 두 배열이 서로 교집합이 되는 부분을 반환하라.
  • 결과 배열의 순서는 상관이 없다.

문제풀이

func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
    guard nums1.count > 0 && nums2.count > 0 else { return [] }

    var nums1Dict = [Int: Int]()
    var result = [Int]()

    for num1 in nums1 {
        var added = 1
        if let val = nums1Dict[num1] {
            added += val
        }
        nums1Dict.updateValue(added, forKey: num1)
    }
    for num2 in nums2 {
        if let val = nums1Dict[num2], val > 0 {
            result.append(num2)
            nums1Dict.updateValue(val-1, forKey: num2)
        }

    }

    return result
}



print(intersect([1,2,2,1], [2,2]))
print(intersect([1,2,2,1], [2,1]))