通过从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