349. Intersection of Two Arrays
2026-03-21
리트코드 349번 풀이
문제
풀이
아이디어
결과 요소들에 중복이 없어야 했으므로 우선 중복 제거를 위해서 두 배열을 모두 set으로 변환했다.
그리고 혹시나해서 찾아봤는데 Intersection을 구하는 함수가 있었다.!!! Set.prototype.intersection() 하지만 2024년에 추가된 최신 문법이기 때문에 풀이 시점 기준 리트코드에서는 지원이 안된다. 아쉽다.. 만약에 가능했으면 아래처럼 간단히 끝낼 수 있었을 것이다.
return Array.from(set1.intersection(set2));intersection은 사용하지 못하니 set1을 다시 배열로 바꿔서 set2에 있는 것만 필터링하는 방법으로 구현했다. 명료하긴 한데 불필요한 반복 (배열 -> set -> 배열)이 신경쓰인다. 하지만 시간 복잡도는 동일하고, 중복을 직접 제거해주면 코드가 불필요하게 지저분해질 것 같아서 그냥 그대로 두었다.
코드
function intersection(nums1: number[], nums2: number[]): number[] {
const set1 = new Set(nums1);
const set2 = new Set(nums2);
return Array.from(set1).filter((num) => set2.has(num));
}시간 / 공간 복잡도
- 시간 복잡도: O(n + m)
- 공간 복잡도: O(n + m)