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