代码随想录算法训练营 | 博客打卡
题目链接:leetcode 55. 跳跃游戏
注:仅为个人笔记,难以细致且通俗。
func canJump(nums []int) bool {
cover := 0
n := len(nums)-1
for i := 0; i <= cover; i++ {
cover = max(i+nums[i], cover)
if cover >= n {
return true
}
}
return false
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
这道题有点意思,有意思的点不在题本身,而是能延伸解读的部分。
[2, 3, 1, 1, 4]
当你在第一个位置上,也就是 2 时,并不是直接跳到目前可以到达的最远点,即第三个位置上,而是选择了路程中前途最广的那一个位置。
不是一条路走到黑,而是在有的机会里选择那个前途最广的。