File tree 2 files changed +69
-5
lines changed
validate-binary-search-tree
2 files changed +69
-5
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ Do not return anything, modify matrix in-place instead.
3
+ */
4
+ /**
5
+ * 90๋ ํ์ ์ํค๊ธฐ
6
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
7
+ * - ์๊ฐ ๋ณต์ก๋: O(n2)
8
+ * - ๊ณต๊ฐ ๋ณต์ก๋: O(1)
9
+ * @param matrix
10
+ */
11
+ function rotate ( matrix : number [ ] [ ] ) : void {
12
+ let n = matrix . length ;
13
+
14
+ // 0,0 -> 2,0
15
+ // 1,0 -> 2,1
16
+ // 2,0 -> 2,2
17
+
18
+ // 0,1 -> 1,0
19
+ // 1,1 -> 1,1
20
+ // 2,1 -> 1,2
21
+
22
+ // 0,2 -> 0,0
23
+ // 1,2 -> 0,1
24
+ // 2,2 -> 0,2
25
+
26
+ // 1 2 3
27
+ // 4 5 6
28
+ // 7 8 9
29
+
30
+ // 1 4 7
31
+ // 2 5 8
32
+ // 3 6 9
33
+
34
+ // 7 4 1
35
+ // 8 5 2
36
+ // 9 6 3
37
+
38
+ // 1. ํ๊ณผ ์ด์ ๋ฐ๊ฟ(ํ๊ณผ ์ด์ ์ ์น)
39
+ for ( let i = 0 ; i < n ; i ++ ) {
40
+ for ( let j = i ; j < n ; j ++ ) {
41
+ // ๋๊ฐ์ ์ ๊ธฐ์ค์ผ๋ก ๋์นญ
42
+ if ( i !== j ) {
43
+ const temp = matrix [ i ] [ j ] ;
44
+ matrix [ i ] [ j ] = matrix [ j ] [ i ] ;
45
+ matrix [ j ] [ i ] = temp ;
46
+ }
47
+ }
48
+ }
49
+
50
+ // 2. ๊ฐ ํ์ ์ข์ฐ๋ก ๋ค์ง๊ธฐ(= 90๋ ํ์ )
51
+ for ( let i = 0 ; i < n ; i ++ ) {
52
+ for ( let j = 0 ; j < Math . floor ( n / 2 ) ; j ++ ) {
53
+ const temp = matrix [ i ] [ j ] ;
54
+ matrix [ i ] [ j ] = matrix [ i ] [ n - 1 - j ] ;
55
+ matrix [ i ] [ n - 1 - j ] = temp ;
56
+ }
57
+ }
58
+ }
Original file line number Diff line number Diff line change 11
11
* }
12
12
* }
13
13
*/
14
-
14
+ /**
15
+ * ์ด์งํธ๋ฆฌ ์ ํจ์ฑ ๊ฒ์ฌํ๊ธฐ
16
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
17
+ * - ์๊ฐ ๋ณต์ก๋: O(n) - n: ๋
ธ๋์ ์ด ๊ฐ์
18
+ * - ๊ณต๊ณค ๋ณต์ก๋: O(h) - h: ํธ๋ฆฌ์ ๋์ด
19
+ * @param root
20
+ */
15
21
function isValidBST ( root : TreeNode | null ) : boolean {
16
22
if ( ! root ) return true ;
17
-
23
+
18
24
function isValid ( node : TreeNode | null , min : number , max : number ) : boolean {
19
25
if ( ! node ) return true ;
20
26
if ( node . val <= min || node . val >= max ) return false ;
21
-
22
- return isValid ( node . left , min , node . val ) &&
27
+
28
+ return isValid ( node . left , min , node . val ) &&
23
29
isValid ( node . right , node . val , max )
24
30
}
25
31
26
32
// ์ด๊ธฐ ํธ์ถ (๋ฃจํธ ๋
ธ๋์ ๋ฒ์๋ ๋ฌดํ๋)
27
33
return isValid ( root , - Infinity , Infinity )
28
- }
34
+ }
You canโt perform that action at this time.
0 commit comments