File tree Expand file tree Collapse file tree 1 file changed +71
-0
lines changed Expand file tree Collapse file tree 1 file changed +71
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * [Problem]: [55] Jump Game
3
+ * (https://leetcode.com/problems/jump-game/description/)
4
+ */
5
+ function canJump ( nums : number [ ] ) : boolean {
6
+ // 시간복잡도 O(N^N)
7
+ // 공간복잡도 O(N)
8
+ // Time Limit Exceeded
9
+ function dfsFunc ( nums : number [ ] ) : boolean {
10
+ function dfs ( start : number ) : boolean {
11
+ if ( start === nums . length - 1 ) return true ;
12
+ for ( let i = 1 ; i <= nums [ start ] ; i ++ ) {
13
+ if ( dfs ( start + i ) ) return true ;
14
+ }
15
+ return false ;
16
+ }
17
+ return dfs ( 0 ) ;
18
+ }
19
+ // 시간복잡도 O(N^2)
20
+ // 공간복잡도 O(N)
21
+ function dpFunc ( nums : number [ ] ) : boolean {
22
+ const n = nums . length ;
23
+ const dp = Array ( n ) . fill ( false ) ;
24
+ dp [ 0 ] = true ;
25
+
26
+ for ( let i = 1 ; i < n ; i ++ ) {
27
+ for ( let j = 0 ; j < i ; j ++ ) {
28
+ if ( dp [ j ] && j + nums [ j ] >= i ) {
29
+ dp [ i ] = true ;
30
+ break ;
31
+ }
32
+ }
33
+ }
34
+
35
+ return dp [ n - 1 ] ;
36
+ }
37
+ // 시간복잡도 O(N^2)
38
+ // 공간복잡도 O(N)
39
+ function memoFunc ( nums : number [ ] ) : boolean {
40
+ let memo = new Map < number , boolean > ( ) ;
41
+
42
+ function dfs ( start : number ) : boolean {
43
+ if ( start === nums . length - 1 ) return true ;
44
+ if ( memo . has ( start ) ) return memo . get ( start ) ! ;
45
+ for ( let i = 1 ; i <= nums [ start ] ; i ++ ) {
46
+ if ( dfs ( start + i ) ) {
47
+ memo . set ( start , true ) ;
48
+ return true ;
49
+ }
50
+ }
51
+
52
+ memo . set ( start , false ) ;
53
+ return false ;
54
+ }
55
+
56
+ return dfs ( 0 ) ;
57
+ }
58
+
59
+ // 시간복잡도 O(N)
60
+ // 공간복잡도 O(1)
61
+ function greedyFunc ( nums : number [ ] ) : boolean {
62
+ let reach = 0 ;
63
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
64
+ if ( i <= reach ) {
65
+ reach = Math . max ( reach , i + nums [ i ] ) ;
66
+ }
67
+ }
68
+
69
+ return nums . length - 1 <= reach ;
70
+ }
71
+ }
You can’t perform that action at this time.
0 commit comments