Python程序:检查能否从索引0到达最后一个位置


假设我们有一个名为nums的数字列表,每个数字表示我们可以跳跃的最大步数;我们必须检查能否从索引0开始到达最后一个索引。

因此,如果输入类似于nums = [2,5,0,2,0],则输出为True,因为我们可以从索引0跳到1,然后从索引1跳到末尾。

为了解决这个问题,我们将遵循以下步骤:

  • n := nums的大小

  • arr := 一个大小为n的数组,并填充为false

  • arr[n - 1] := True

  • 对于i从n - 2到0,递减1,执行:

    • 如果arr[从索引i + 1到i + nums[i]]中的任何一个为真,则arr[i] := true

  • 返回arr[0]

让我们来看下面的实现,以便更好地理解:

示例

 在线演示

class Solution:
   def solve(self, nums):
      n = len(nums)
      arr = [False] * n
      arr[n - 1] = True
      for i in range(n - 2, -1, -1):
         arr[i] = any(arr[i + 1 : i + nums[i] + 1])
      return arr[0]
ob = Solution()
nums = [2,5,0,2,0]
print(ob.solve(nums))

输入

[2,5,0,2,0]

输出

True

更新于:2020年10月9日

165次浏览

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.