350. Intersection of Two Arrays II

주어진 두 개의 μ •μˆ˜ λ°°μ—΄ nums1 κ³Ό nums2 의
ꡐ집합 배열을 λ°˜ν™˜ν•˜λ„λ‘ μž‘μ„±ν•˜λΌ.

결과의 각 μš”μ†ŒλŠ” 두 배열에 ν‘œμ‹œλ˜λŠ” 횟수만큼 λͺ¨λ‘ λ‚˜νƒ€λ‚˜μ•Όν•œλ‹€.

Example 1:
    Input: nums1 = [1,2,2,1], nums2 = [2,2]
    Output: [2,2]

Example 2:
    Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    Output: [4,9]
    Explanation: [9,4] is also accepted.
 

Constraints:
    1 <= nums1.length, nums2.length <= 1000
    0 <= nums1[i], nums2[i] <= 1000

Solution

class Solution {
    func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
        var res: [Int] = []
        
        var nums2 = nums2
        for num in nums1 {
            if nums2.contains(num) {
                res.append(num)
                nums2.remove(at: nums2.firstIndex(of: num)!)
            }
        }
        
        return res
    }
}

nums1 의 μš”μ†Œλ₯Ό num 둜 μˆœνšŒν•˜λ©΄μ„œ nums2 에 ν¬ν•¨ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•œλ‹€.
ν¬ν•¨ν•˜κ³  μžˆλ‹€λ©΄ num 을 결과둜 λ°˜ν™˜ν•  λ°°μ—΄ res 에 λ„£μ–΄μ€€λ‹€.

nums2 에 num 이 λ“€μ–΄μžˆλŠ”μ§€ 확인을 μ™„λ£Œν–ˆμœΌλ―€λ‘œ,
ν™•μΈν•œ nums2 λ‚΄μ˜ num μš”μ†Œλ₯Ό μ‚­μ œν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.


πŸ“š Reference
LeetCode-350-IntersectionOfTwoArrays2