用 Python 编写程序检查我们能否通过单词列表拼出目标
pythonserver side programmingprogramming更新于 2026/1/9 0:12:17
假设我们有一个名为 nums 的数字列表和另一个数字 k。如果我们从索引 k 和任何索引 i 开始,我们可以向左或向右移动恰好 nums[i] 步数。我们必须检查是否可以到达列表的末尾。
因此,如果输入为 nums = [0, 0, 2, 1, 3, 3, 1, 1] k = 2,则输出将为 True,就好像我们从索引 2 开始,然后跳转到索引 4,然后跳转到最后一个索引 7。
为了解决这个问题,我们将遵循以下步骤−
n:= nums 的大小
visited := 大小为 n 的列表并用 0 填充
tovisit := 大小为 1 的列表,并将 k 插入其中
while size of tovisit < 0,执行
i:= tovisit 中的最后一个元素并将其从 tovisit 中删除
如果 i 与 n-1 相同,则
返回 True
如果 accessed[i] 不等于 1,则
visited[i]:= 1
up:= i + nums[i]
down:= i - nums[i]
如果 up < n,则
在 tovisit 末尾向上插入
如果 down >= 0,则
在 tovisit 末尾向下插入
返回 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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

