You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python跳房子游戏编程题:判断能否从起始索引到达末尾索引

Python程序判断跳房子游戏能否到达最后一个索引

问题描述

给定一个整数列表,每个数字代表跳房子游戏中当前位置可跳跃的最大步数,判断从索引0出发是否能够到达最后一个索引。例如:

  • 输入[2, 0, 1, 0]返回True
  • 输入[1, 1, 0, 1]返回False

输入输出要求

输入格式

单行空格分隔的整数

约束条件

列表长度大于0

输出格式

布尔值True或False

示例

示例输入0

2 3 1 1 4

示例输出0

True

解释0

输入:nums = [2,3,1,1,4]
输出:True
解释:从索引0跳1步到索引1,再跳3步到达最后一个索引。

示例输入1

3 2 1 0 4

示例输出1

False

解释1

输入:nums = [3,2,1,0,4]
输出:False
解释:无论如何都会到达索引3,其最大跳跃长度为0,无法到达最后一个索引。

解决方案

用贪心算法可以高效解决这个问题,时间复杂度O(n),空间复杂度O(1)。核心逻辑是维护当前能到达的最远位置:

  1. 初始化最远可达位置max_reach为0
  2. 遍历列表每个索引i:
    • 若当前索引i超出max_reach,说明无法到达该位置,直接返回False
    • 更新max_reach为max(max_reach, i + nums[i])
    • 若max_reach已覆盖最后一个索引,直接返回True
  3. 遍历结束后返回True

Python代码

nums = list(map(int, input().split()))
n = len(nums)

if n == 1:
    print(True)
    exit()

max_reach = 0
for i in range(n):
    if i > max_reach:
        print(False)
        exit()
    max_reach = max(max_reach, i + nums[i])
    if max_reach >= n - 1:
        print(True)
        exit()

print(False)

代码说明

  • 特殊情况处理:列表只有一个元素时,本身就在终点,直接返回True
  • 遍历中实时更新最远可达位置,一旦确认能到终点就提前返回,减少不必要的计算
  • 遇到无法到达的位置时立即返回False,终止程序

内容的提问来源于stack exchange,提问作者Fgr Reloaded

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:20:34