문제설명
- 두 정수 배열, 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]))