写这篇文章源于之前4.10做的字节跳动的笔试,第二道编程题就是跳跃游戏类,可以说和牛客或者力扣上边的解题做法是完全一样的,可惜当时我才刚开始学习算法。深入了解该类型后发现真的很有意思,这篇文章给大家分享一下本人的思路及解题方法,算是系统性地阐述了该类问题的解法,假如把这几题搞懂,我觉得在遇到该类问题便能做到得心应手了。

目录

一、贪心算法

二、跳跃游戏Ⅰ

题目描述:

解题思路:

解法1:

解法2:

三、拓展问题

1、固定跳跃游戏:

2、跳跃游戏Ⅱ(最少步数/次数):

3、跳跃游戏Ⅲ(最佳路径)

总结


一、贪心算法

贪心算法,是寻找最优解问题的常用方法,这种方法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。

对于跳跃问题来说,贪心算法是不错的选择,跳跃问题需要你每次做出选择,并选择能带来更多收益的位置,可通过for/while遍历+条件语句来解决,常规具体步骤:

步骤1:从某个初始解出发;

步骤2:采用迭代的过程,当可以向目标前进一步时,就根据局部最优策略,得到一部分解,缩小问题规模;

步骤3:将所有解综合起来。

二、跳跃游戏Ⅰ

题目描述:

字节跳动题目:给定一个非负整数数组nums,例如:[2,0,1,0,3],位置上的数值代表了能量值的多少,给定机器人初始位于第一个位置,机器人走一步,需要消耗1个单位能量,如果当前位置能量为0,则无法走了。arr每个位置就是能量值arri,机器人可以选择走0–arri步,请问你机器人能走到终点N位置吗?

示例:

输入: [2,3,1,1,4]
输出: true
解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。

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

其实字节的题目只是跳跃游戏的变形,不信你看跳跃游戏的原题

【编程算法】跳跃游戏ⅠⅡⅢ(Python解法)相关推荐

  1. 跳跃游戏Python解法

    给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个下标. 列: 输入:nums = [2,3,1,1,4 ...

  2. LeetCode 148. Sort List--面试算法题--C++,Python解法

    LeetCode 148. Sort List–面试算法题–C++,Python解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大 ...

  3. PTA基础编程题目集 之 Python解法(7-8)

    PTA基础编程题目集 之 Python解法(7-8) 7-8 超速判断 (10分) 模拟交通警察的雷达测速仪.输入汽车速度,如果速度超出60 mph,则显示"Speeding",否 ...

  4. LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法

    题目地址:Add Two Numbers II - LeetCode You are given two non-empty linked lists representing two non-neg ...

  5. 贪心算法-跳跃游戏——b

    1.题目描述 定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 2.问题分析 这也是一道跳跃问 ...

  6. 【LeetCode】LeetCode之跳跃游戏Ⅱ——暴力解法+动态规划+贪婪算法

    1.题目描述

  7. JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码)

    JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码) dpTopDownJumpGame.js完整源代码 dpTopDownJumpGame.test.js完整源代码 dpTop ...

  8. JavaScript实现跳跃游戏的动态编程自下而上的方法的算法(附完整源码)

    JavaScript实现跳跃游戏的动态编程自下而上的方法的算法(附完整源码) dpBottomUpJumpGame.js完整源代码 dpBottomUpJumpGame.test.js完整源代码 dp ...

  9. 跳跃游戏-算法-简单易懂的解法

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

  10. python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...

最新文章

  1. 墙裂建议收藏,100道Python练手题目
  2. 线程间操作无效:从不是创建控件的线程访问它的三种方法
  3. GridView利用FootTemplate插入新记录
  4. CentOS7 部署 galera cluster mariadb 10.1
  5. 异常org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 11; 注释中不允许出现字符串 --。的原因...
  6. java判断ftp创建目录是否成功_Java判断Ftp服务器目录是否存在,若不存在创建目录 ....
  7. CCIE理论-第四篇-SDA-1
  8. 巧妙解决Windows 7系统中软件乱码问题
  9. 高观点下的高等数学(数学分析、线性代数)
  10. python之django中models学习总结
  11. 锌合金铸件压铸方案的优化与应用 | 智铸超云案例分享
  12. 使用SimHash进行海量文本去重
  13. 【CocosCreator 3.x】实现双人同屏效果 => 攻略
  14. matplotlib 绘制图中图
  15. unity 打安卓包 华为手机图片被压扁
  16. 棋盘格自动生成器——四种格式(格雷码棋盘格、圆点、二维码棋盘格)
  17. C语言_回文字符串的判断
  18. 容天服务器4450系统密码,金铂gob q7-f手机忘记开机密码怎么办
  19. [转载]playframework的视频短片
  20. IT研发人员不能说的秘密-13种泄密方式

热门文章

  1. 单片机实验报告-片内外RAM的数据转移
  2. 2016年计算机辅助设计试题,cad考试题「附答案」
  3. JS中的innerHTML和outerHTML区别
  4. 贵州大学计算机网络试题,贵州大学计算机基础考试题库.doc
  5. iPhone4s/iPad2无shsh降级iOS6.1.3
  6. hg8120c 维修使能工具_ONT 用户手册(中国移动) V300R016C10.doc
  7. HDOJ(航电)题目分类大全
  8. 超详细的 Python 方法、函数总结
  9. Paraview源码解析7:vtkTransform类
  10. 中职计算机ps教案ppt,photoshop课件ppt