Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- leedcode
- useCallback 성능 최적화
- RxJS 멀티캐스팅
- 알고리즘스터디
- React useCallback 사용법
- RxJS 생성 오퍼레이터
- RxJS 에러 처리
- RxJS 함수형 프로그래밍
- leetcode
- React 리렌더링 최적화
- 개발자커뮤니케이션
- useMemo 성능 최적화
- 스쿼드조직
- DaleStudy
- Climbing Stairs
- React useEffect 안티패턴
- React hooks 남용 사례
- RxJS 마블 다이어그램
- contains duplicate
- RxJS 변환 오퍼레이터
- React 성능 최적화 방법
- 알고리즘
- React useMemo 사용법
- Observable vs Array
- 협업문화
- RxJS 오퍼레이터
- Blind75
- RxJS 결합 오퍼레이터
- 자바스크립트 고차 함수 vs Observable
- 달래스터디
Archives
- Today
- Total
수쿵의 IT월드
DaleStudy | Leetcode Study 1주차 - Contains Duplicate 본문

문제
Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
Example 1:
input: nums = [1,2,3,1]
Output: true
Explanation: The element 1 occurs at the indices 0 and 3.
Example 2:
input: nums = [1,2,3,4]
Output: false
Explanation: All elements are distinct.
Example 3:
input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true
Constraints:
- 1 <= nums.length <= 10^5
- -10^9 <= nums[i] <= 10^9
풀이
문제를 보면 중복이 있는지 없는지 확인만 하면 되기 때문에 자바스크립트 자료구조 Set을 이용해서 size와 배열 길이를 비교해주면 끝난다. 자료구조 Set의 경우, 중복된 값을 제거해주기 때문에 만약 중복이 없다면, 배열과 길이가 동일하고 중복이 있다면 배열과 길이가 다를 것이다.
그리고, 조건을 보면 허용 가능한 시간 복잡도와 공간 복잡도를 알 수 있다.
- 시간복잡도: O(n) 또는 O(n log n)까지 가능
- 공간복잡도: O(n)까지 가능
길이를 비교하는 경우, 배열과 Set의 시간복잡도와 공간복잡도가 동일한데 시간복잡도는 O(1), 공간복잡도는 O(n)이기 때문에 이 조건을 충분히 만족하기 때문에 아래의 방식으로 해결할 수 있다.
function containsDuplicate(nums: number[]): boolean {
return new Set(nums).size !== nums.length;
};