1
1
package fibfrog
2
2
3
- import "fmt"
4
-
5
3
/**
6
4
* @description: 產生不大於n的斐波那契數的列表
7
5
* @param {int} N
@@ -29,16 +27,17 @@ func Solution(A []int) int {
29
27
return 1
30
28
}
31
29
fibArr = fibArr [1 : len (fibArr )- 1 ]
32
- fmt .Println (fibArr )
30
+ // fmt.Println(fibArr)
33
31
34
32
// get the leafs that can be reached from the starting shore
35
33
reachable := make ([]int , N )
36
34
for _ , v := range fibArr {
37
35
if A [v - 1 ] == 1 {
36
+ // 找到樹葉
38
37
reachable [v - 1 ] = 1
39
38
}
40
39
}
41
- // 一開始只能到 index: 4
40
+ // 一開始只能跳到 index: 4 , fib是 [1 1 2 3 5 8], 會使用到 5
42
41
// fmt.Println("re", reachable) // [0 0 0 0 1 0 0 0 0 0 0 0]
43
42
44
43
// iterate all the positions until you reach the other shore
@@ -58,13 +57,13 @@ func Solution(A []int) int {
58
57
previousIdx := i - f
59
58
60
59
if previousIdx < 0 || reachable [previousIdx ] == 0 {
61
- fmt .Printf ("[No] %d :previousIdx = %d reachable = %v \n " , i , previousIdx , reachable )
60
+ // fmt.Printf("[No] %d :previousIdx = %d reachable = %v \n", i, previousIdx, reachable)
62
61
continue
63
62
}
64
- fmt .Printf ("%d :previousIdx = %d reachable = %v \n " , i , previousIdx , reachable )
65
63
66
64
if minJump > reachable [previousIdx ] {
67
65
// 此 previousIdx 位置可以到達
66
+ // fmt.Printf("%d :previousIdx = %d reachable = %v \n", i, previousIdx, reachable)
68
67
minJump = reachable [previousIdx ]
69
68
canJump = true
70
69
}
@@ -73,12 +72,11 @@ func Solution(A []int) int {
73
72
reachable [i ] = minJump + 1
74
73
}
75
74
}
76
- fmt .Printf ("i=%d , reachable = %v \n " , i , reachable )
75
+ // fmt.Printf("i=%d , reachable = %v \n", i, reachable)
77
76
}
78
77
79
- if reachable [len (reachable )- 1 ] < N {
80
- return reachable [len (reachable )- 1 ]
81
- } else {
78
+ if reachable [len (reachable )- 1 ] == 0 {
82
79
return - 1
83
80
}
81
+ return reachable [len (reachable )- 1 ]
84
82
}
0 commit comments