본문 바로가기

알고리즘풀이

LeetCode: Intersection of Two Arrays II

문제설명

  • 두 정수 배열, 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]))

'알고리즘풀이' 카테고리의 다른 글

LeetCode: MoveZeroes  (0) 2021.04.02
LeetCode: Plus One  (0) 2021.04.01
LeetCode: Single Number  (0) 2021.03.30
LeetCode: Contains Duplicate  (0) 2021.03.30
LeetCode: Rotate Array  (0) 2021.03.29