File tree Expand file tree Collapse file tree 2 files changed +49
-0
lines changed
Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for singly-linked list.
3+ * class ListNode {
4+ * val: number
5+ * next: ListNode | null
6+ * constructor(val?: number, next?: ListNode | null) {
7+ * this.val = (val===undefined ? 0 : val)
8+ * this.next = (next===undefined ? null : next)
9+ * }
10+ * }
11+ */
12+ /**
13+ * 두개의 리스트 정렬 - 재귀 알고리즘으로 접근
14+ * 알고리즘 복잡도
15+ * - 시간 복잡도: O(n+m) - 모든 노드를 한 번씩 들르기 때문
16+ * - 공간 복잡도: O(n+m) - 함수 호출 스택이 재귀 호출로 인해 사용하기 때문
17+ * @param list1
18+ * @param list2
19+ */
20+ function mergeTwoLists ( list1 : ListNode | null , list2 : ListNode | null ) : ListNode | null {
21+ if ( ! ( list1 && list2 ) ) return list1 || list2
22+ if ( list1 . val < list2 . val ) {
23+ list1 . next = mergeTwoLists ( list1 . next , list2 ) ;
24+ return list1
25+ } else {
26+ list2 . next = mergeTwoLists ( list2 . next , list1 ) ;
27+ return list2
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * 주어진 배열의 중간에 없는 숫자 찾기
3+ * 알고리즘 복잡도
4+ * - 시간 복잡도: O(nlogn)
5+ * - 공간 복잡도: O(1)
6+ * @param nums
7+ */
8+ function missingNumber ( nums : number [ ] ) : number {
9+ if ( nums . length === 1 ) {
10+ return nums [ 0 ] === 0 ? 1 : 0
11+ }
12+
13+ nums . sort ( ( a , b ) => a - b )
14+
15+ for ( let i = 0 ; i < nums . length ; i ++ ) {
16+ if ( nums [ 0 ] !== 0 ) return 0
17+ if ( nums [ i ] + 1 !== nums [ i + 1 ] )
18+ return nums [ i ] + 1
19+ }
20+ }
You can’t perform that action at this time.
0 commit comments