File tree Expand file tree Collapse file tree 1 file changed +65
-0
lines changed Expand file tree Collapse file tree 1 file changed +65
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ ํ์ด 1
3+ - memo ๋ฐฐ์ด์ ์ด์ฉํ์ฌ n-1๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ 0๋ฒ์งธ ์ธ๋ฑ์ค ๋ฐฉํฅ์ผ๋ก ํ์ํ์ฌ ํ์ดํ ์ ์์ต๋๋ค
4+ memo[i] = i๋ฒ์งธ ์ธ๋ฑ์ค์์ ์ถ๋ฐํ์ ๋ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๋๋ฌํ ์ ์๋์ง ์ฌ๋ถ
5+
6+ Big O
7+ - N: ์ฃผ์ด์ง ๋ฐฐ์ด nums์ ๊ธธ์ด
8+ - Time complexity: O(N)
9+ - Space complexity: O(N)
10+ - ํ์ด 2๋ฅผ ์ด์ฉํ๋ฉด O(1)์ผ๋ก ์ต์ ํํ ์ ์์ต๋๋ค
11+ */
12+
13+ func canJump (nums []int ) bool {
14+ n := len (nums )
15+
16+ if nums [0 ] == 0 && n > 1 {
17+ return false
18+ }
19+
20+ memo := make ([]bool , n )
21+ memo [n - 1 ] = true
22+
23+ for i := n - 2 ; i >= 0 ; i -- {
24+ for j := 1 ; j <= nums [i ]; j ++ {
25+ if i + j >= n {
26+ break
27+ }
28+ if memo [i + j ] {
29+ memo [i ] = true
30+ break
31+ }
32+ }
33+ }
34+
35+ return memo [0 ]
36+ }
37+
38+ /*
39+ ํ์ด
40+ - ํ์ด 1์ ์ ๊ด์ฐฐํ๋ฉด memo๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์์ ํ์๊ฐ ์๋ค๋ ๊ฑธ ์ ์ ์์ต๋๋ค
41+ memo ๋ฐฐ์ด ๋์ ์, ๋ฌธ์ ์ ์กฐ๊ฑด๋๋ก ๋ง์ง๋ง ์ธ๋ฑ์ค๊น์ง ๊ฐ ์ ์๋ ๊ฐ์ฅ ์ข์ธก์ ์ธ๋ฑ์ค๋ง ๊ธฐ๋กํฉ๋๋ค (leftmost)
42+
43+ Big O
44+ - N: ์ฃผ์ด์ง ๋ฐฐ์ด nums์ ๊ธธ์ด
45+ - Time complexity: O(N)
46+ - Space complexity: O(1)
47+ */
48+
49+ func canJump (nums []int ) bool {
50+ n := len (nums )
51+
52+ if nums [0 ] == 0 && n > 1 {
53+ return false
54+ }
55+
56+ leftmost := n - 1
57+
58+ for i := n - 2 ; i >= 0 ; i -- {
59+ if i + nums [i ] >= leftmost {
60+ leftmost = i
61+ }
62+ }
63+
64+ return leftmost == 0
65+ }
You canโt perform that action at this time.
0 commit comments