Problem From.
https://leetcode.com/problems/find-the-difference-of-two-arrays/
오늘 문제는 두개의 리스트가 주어졌을때, 각 리스트에서 서로 중복되는 요소를 빼고 나머지 요소를 넣은 list 를 반환하는 문제였다.
nums1 에 있는 요소를 nums2 에서 빼고 nums2 에 있는 요소를 nums1 에서 빼는 식으로 구현하였어야했다.
데이터의 삭제속도를 빠르게 하기 위해서 nums1 과 nums2 를 둘다 hashSet 으로 구현한 다음에 nums1 을 돌면서 set2 의 요소를 삭제하고 nums2 를 돌면서 set1 의 요소를 삭제하는 식으로 해주었다. 그 결과 아래 풀이의 시간 복잡도는 O(N) 이 된다.
class Solution {
fun findDifference(nums1: IntArray, nums2: IntArray): List<List<Int>> {
val set1 = nums1.toMutableSet()
val set2 = nums2.toMutableSet()
nums1.forEach {
set2.remove(it)
}
nums2.forEach {
set1.remove(it)
}
return listOf(set1.toList(), set2.toList())
}
}