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