Python 中的跳跃比赛 II
假设我们有一个数组,其中所有元素都是正数。最开始的起始点为索引 1。数组中的每个元素表示在该位置我们的最大跳跃长度。我们的目的是用更少的跳跃次数到达最后一个格子。因此,如果数组类似于 [2,3,1,1,4],那么输出将为 2,因为我们可以从 0 跳跃到索引 1,然后跳跃到索引 4,即最后一个索引。
为了解决这个问题,我们将按照以下步骤进行操作
end := 0, jumps := 0, farthest := 0
对于从 0 到长度为 nums – 1 的 i
将 farthest 更新为 farthest 和 nums[i] + i 中的最大值
如果 i 等于 end,并且 i 不等于长度为 nums – 1,那么
将 jumps 增加 1
将 end 更新为 farthest
返回 jumps
示例
让我们查看以下实现来获得更好的理解
class Solution(object): def jump(self, nums): end = 0 jumps = 0 farthest = 0 for i in range(len(nums)): farthest = max(farthest,nums[i]+i) if i == end and i != len(nums)-1: jumps+=1 end = farthest return jumps ob = Solution() print(ob.jump([2,3,1,1,4]))
输入
[2,3,1,1,4]
输出
2
广告