1 题目

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标。
示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

2 解析

思路: 尽可能到达最远位置(贪心)。
如果能到达某个位置,那一定能到达它前面的所有位置。

方法: 初始化最远位置为 0,然后遍历数组,如果当前位置能到达,并且当前位置+跳数>最远位置,就更新最远位置。最后比较最远位置和数组长度。

复杂度:时间复杂度 O(n)O(n),空间复杂度 O(1)O(1)。

3 Python实现

class Solution:def canJump(self, nums: List[int]) -> bool:# 初始化当前位置能到达的最远位置max_k = 0 end_index = len(nums)-1for i in range(len(nums)):# 判断如果最远距离能够超过最后一个位置,提前结束,减少循环次数,能够提高运行时间if max_k >= end_index:return True# 如果当前位置超过能到达位置的最大值,则失败if i > max_k:return False# 更新最远位置max_k = max(max_k, i+nums[i])return True

【Leetcode刷题Python】55. 跳跃游戏相关推荐

  1. Leetcode刷题笔记 55. 跳跃游戏

    55. 跳跃游戏 时间:2020年12月1日 知识点:贪心 题目链接:https://leetcode-cn.com/problems/jump-game/ 题目 给定一个非负整数数组,你最初位于数组 ...

  2. LeetCode刷题Python实录

    使用Python的LeetCode刷题 前言 题目 1408. 数组中的字符串匹配 508. 出现次数最多的子树元素和 1089. 复写零 剑指 Offer 14- I. 剪绳子 1175. 质数排列 ...

  3. 高频leetcode动态规划部分:55. 跳跃游戏

    55. 跳跃游戏 难度中等1615 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个下标. 示例 1: ...

  4. 【Leetcode刷题Python】174. 地下城游戏

    1 题目 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. ...

  5. leetcode刷题:292. Nim 游戏(Java)

    题目描述 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解. 编写一个函 ...

  6. 【代码】LeetCode刷题Python版

    python版LeetCode 算法部分 811. 子域名访问计数 class Solution:def subdomainVisits(self, cpdomains):""&q ...

  7. 【Leetcode刷题Python】40. 组合总和 II

    1 题目 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每 ...

  8. 【Leetcode刷题Python】494. 目标和

    1 题目 给你一个整数数组 nums 和一个整数 target . 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可 ...

  9. 【Leetcode刷题Python】516. 最长回文子序列

    1 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列. 示例 1: 输入:s = &q ...

最新文章

  1. Kickstart的配置文件anaconda-ks.cfg解析
  2. Repeater控件最后一笔记录高亮显示
  3. 快速排序C实现(阿里巴巴 2012年全国校招笔试题)
  4. centos6.8 安装mysql_Centos6.8通过yum安装mysql5.7
  5. 3D数学读书笔记——3D中的方位与角位移
  6. java 代码重用_Java 代码重用:功能与上下文重用
  7. 树莓派python gpio 模仿iic_Adafruit的树莓派教程:GPIO配置
  8. jquery layout学习
  9. iptables学习笔记:端口转发之“外网访问内网”
  10. Oracle总结第一篇【基本SQL操作】
  11. JAVA常见命名规范
  12. 电磁场理论基础 01-17
  13. AXURE母版事件(Raised-events)
  14. [Android Studio] 添加Override/Implement methods
  15. 信息系统项目管理师---第十章 项目沟通管理和项目干系人管理
  16. linux如何开启cpu热插拔,Linux走向真正的CPU热插拔支持
  17. 数学基础二:点到直线距离公式推导
  18. excel函数自变量linux,excle 求自变量 | 如何用EXCEL已知自变量和函数值求函数式
  19. 计算机应用基础2020答案形考,国开2020秋季答案《计算机应用基础(本)》形考学习过程表现...
  20. C++primer学习(13.拷贝控制)

热门文章

  1. IIS服务器开启https
  2. android HID添加(三) ---applist key
  3. Promise的基础使用与生成器配合Promise解决回调地狱
  4. Exception in thread main java.lang.RuntimeException: java.net.ConnectException错误问题
  5. Anroid 逆向工具
  6. 什么是MVC模式??
  7. Vue.js中的v-model指令(双向绑定)
  8. 表格下拉选项怎么添加,开启快速添加模式
  9. golang实现单点登录
  10. java 文件读取 逗号分隔_java – 读取逗号分隔配置文件的最佳方法是什么?