File tree Expand file tree Collapse file tree 2 files changed +84
-0
lines changed
find-minimum-in-rotated-sorted-array
maximum-depth-of-binary-tree Expand file tree Collapse file tree 2 files changed +84
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param nums - 오름차순 정렬된 정수 배열
3+ * @returns - 최솟값
4+ * @description
5+ * - 이진 탐색으로 right와 비교하며 배열의 범위를 좁혀가며 탐색
6+ * - left와 right가 겹치는 포인트가 최솟값
7+ */
8+
9+ function findMin ( nums : number [ ] ) : number {
10+ let left = 0 ;
11+ let mid = Math . floor ( nums . length / 2 ) ;
12+ let right = nums . length - 1 ;
13+
14+ if ( nums . length < 2 ) {
15+ return nums [ 0 ] ;
16+ }
17+
18+ while ( left < right ) {
19+ if ( nums [ right ] < nums [ mid ] ) {
20+ left = mid + 1 ;
21+ } else {
22+ right = mid ;
23+ }
24+
25+ mid = Math . floor ( ( left + right ) / 2 ) ;
26+ }
27+ return nums [ left ] ;
28+ }
29+
30+ const nums = [ 2 , 1 ] ;
31+ console . log ( findMin ( nums ) ) ;
Original file line number Diff line number Diff line change 1+ class TreeNode {
2+ val : number ;
3+ left : TreeNode | null ;
4+ right : TreeNode | null ;
5+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
6+ this . val = val === undefined ? 0 : val ;
7+ this . left = left === undefined ? null : left ;
8+ this . right = right === undefined ? null : right ;
9+ }
10+ }
11+
12+ /**
13+ * @param root - 이진 트리
14+ * @returns - 루트 노드에서 가장 먼 리프노드 까지 가장 긴 경로를 따른 노드 수
15+ * @description
16+ * - root가 없는 경우를 제외 후 재귀 호출로 1씩 증가
17+ * - left, right 중 가장 큰 값을 return
18+ * - maxDepth 자체를 재귀로 사용하는 방식이 가장 효율적
19+ */
20+
21+ // function maxDepth(root: TreeNode | null): number {
22+ // if (!root) {
23+ // return 0;
24+ // }
25+
26+ // function recursive(current: TreeNode | null): number {
27+ // if (!current) {
28+ // return 0;
29+ // }
30+
31+ // return 1 + Math.max(recursive(current.left), recursive(current.right));
32+ // }
33+
34+ // return recursive(root);
35+ // }
36+
37+ function maxDepth ( root : TreeNode | null ) : number {
38+ if ( root === null ) {
39+ return 0 ;
40+ }
41+
42+ const left = 1 + maxDepth ( root . left ) ;
43+ const right = 1 + maxDepth ( root . right ) ;
44+
45+ return Math . max ( left , right ) ;
46+ }
47+
48+ const root = new TreeNode (
49+ 3 ,
50+ new TreeNode ( 9 ) ,
51+ new TreeNode ( 20 , new TreeNode ( 15 ) , new TreeNode ( 7 ) )
52+ ) ;
53+
You can’t perform that action at this time.
0 commit comments