LeetCode in Python 55. Jump Game (跳跃游戏)

跳跃游戏的游戏规则比较简单,若单纯枚举所有的跳法以判断是否能到达最后一个下标需要的时间复杂度为O(),为此,本文采用贪心策略,从最后一个下标开始逆着向前走,若能跳到第一个元素则表明可以完成跳跃游戏,反之不能。此方法只需遍历一次数组,时间复杂度为O(n)。

示例:

图1 跳跃游戏输入输出示例

代码:

python 复制代码
class Solution:
    def canJump(self, nums):
        goal = len(nums) - 1
        for i in range(len(nums) - 1, -1, -1):
            if i + nums[i] >= goal:
                goal = i
        if goal == 0:
            return True
        else:
            return False

解释:

1)goal初始为最后一个下标,其代表需要跳入的目标位置。从最后一个位置开始往前跳,如果前一个位置(i)+前一个位置可以跳的最大长度(nums[i])>=goal,表明可以从前一个位置跳到目标位置。如此一来,即可将目标位置更新为前一个位置,如此往复,直到goal==0,即可以跳到第一个位置,表明完成跳跃游戏,反之不能。时间复杂度由枚举法的O()降至O(n)。

相关推荐
观音山保我别报错11 分钟前
列表,元组,字典
开发语言·python
小付爱coding14 分钟前
Claude Code安装教程【windows版本】
java·git·python
2301_8002561124 分钟前
8.2 空间查询基本组件 核心知识点总结
数据库·人工智能·算法
不穿格子的程序员24 分钟前
从零开始写算法——矩阵类题:矩阵置零 + 螺旋矩阵
线性代数·算法·矩阵
点金石游戏出海35 分钟前
模拟品类洞察:全球市场格局稳健,何为引领未来增长的路径?
游戏·模拟游戏·海外市场·手游市场·游戏市场·模拟手游·市场分析
高频交易dragon37 分钟前
5分钟和30分钟联立进行缠论信号分析
开发语言·python
0思必得039 分钟前
[Web自动化] 开发者工具应用(Application)面板
运维·前端·python·自动化·web自动化·开发者工具
我是华为OD~HR~栗栗呀43 分钟前
华为OD-C面经-23届学院哦
java·c++·python·华为od·华为·面试
资深web全栈开发1 小时前
LeetCode 3432. 统计元素和差值为偶数的分区方案数
算法·leetcode
xiaozi41201 小时前
Ruey S. Tsay《时间序列分析》Python实现笔记:综合与应用
开发语言·笔记·python·机器学习