通过从Python中的k开始检查我们是否可以到达列表末尾的程序

假设我们有一个称为nums和另一个数字k的数字列表。如果我们从索引k开始并在任何索引i处开始,我们可以向左或向右移动nums [i]个步骤。我们必须检查是否可以到达列表的末尾。

因此,如果输入类似于nums = [0,0,2,1,1,3,3,1,1] k = 2,则输出将为True,就像我们从索引2开始一样,然后跳至索引4然后跳到最后一个索引7。

为了解决这个问题,我们将按照以下步骤操作:

  • n:=数字大小

  • Visited:=大小为n的列表,并填充0

  • 访问:=大小为1的列表,然后将k插入其中

  • 当访问量小于0时,执行

    • i:= tovisit中的最后一个元素,并将其从tovisit中删除

    • 如果我与n-1相同,则

    • 返回True

  • 如果visit [i]与1不同,则

    • 访问过[i]:= 1

    • 上:= i +数字[i]

    • down:= i-nums [i]

    • 如果up <n,则

    • 在访问结束时插入

    • 如果向下> = 0,则

    • 在访问结束时插入

  • 返回False

让我们看下面的实现以更好地理解-

示例

class Solution:

   def solve(self, nums, k):

      n=len(nums)

      visited = [0]*n

      tovisit = [k]

      while len(tovisit)>0:

         i=tovisit.pop()

         if i==n-1:

            return True

         if visited[i]!=1:

            visited[i]=1

            up=i+nums[i]

            dn=i-nums[i]

         if up=0:

            tovisit.append(dn)

      return False

ob = Solution()nums = [0, 0, 2, 1, 3, 3, 1, 1]

k = 2

print(ob.solve(nums, k))

输入值

[0, 0, 2, 1, 3, 3, 1, 1], 2

输出结果

True

以上是 通过从Python中的k开始检查我们是否可以到达列表末尾的程序 的全部内容, 来源链接: utcz.com/z/350281.html

回到顶部