【编程算法】跳跃游戏ⅠⅡⅢ(Python解法)
写这篇文章源于之前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解法)相关推荐
- 跳跃游戏Python解法
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个下标. 列: 输入:nums = [2,3,1,1,4 ...
- LeetCode 148. Sort List--面试算法题--C++,Python解法
LeetCode 148. Sort List–面试算法题–C++,Python解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大 ...
- PTA基础编程题目集 之 Python解法(7-8)
PTA基础编程题目集 之 Python解法(7-8) 7-8 超速判断 (10分) 模拟交通警察的雷达测速仪.输入汽车速度,如果速度超出60 mph,则显示"Speeding",否 ...
- 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 ...
- 贪心算法-跳跃游戏——b
1.题目描述 定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 2.问题分析 这也是一道跳跃问 ...
- 【LeetCode】LeetCode之跳跃游戏Ⅱ——暴力解法+动态规划+贪婪算法
1.题目描述
- JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码)
JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码) dpTopDownJumpGame.js完整源代码 dpTopDownJumpGame.test.js完整源代码 dpTop ...
- JavaScript实现跳跃游戏的动态编程自下而上的方法的算法(附完整源码)
JavaScript实现跳跃游戏的动态编程自下而上的方法的算法(附完整源码) dpBottomUpJumpGame.js完整源代码 dpBottomUpJumpGame.test.js完整源代码 dp ...
- 跳跃游戏-算法-简单易懂的解法
跳跃游戏I: 问题: 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 .数组中的每个元素代表你在该位置可以跳跃的最大长度.判断你是否能够到达最后一个下标. 示例 1: 输入:nums ...
- python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...
游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...
最新文章
- 墙裂建议收藏,100道Python练手题目
- 线程间操作无效:从不是创建控件的线程访问它的三种方法
- GridView利用FootTemplate插入新记录
- CentOS7 部署 galera cluster mariadb 10.1
- 异常org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 11; 注释中不允许出现字符串 --。的原因...
- java判断ftp创建目录是否成功_Java判断Ftp服务器目录是否存在,若不存在创建目录 ....
- CCIE理论-第四篇-SDA-1
- 巧妙解决Windows 7系统中软件乱码问题
- 高观点下的高等数学(数学分析、线性代数)
- python之django中models学习总结
- 锌合金铸件压铸方案的优化与应用 | 智铸超云案例分享
- 使用SimHash进行海量文本去重
- 【CocosCreator 3.x】实现双人同屏效果 => 攻略
- matplotlib 绘制图中图
- unity 打安卓包 华为手机图片被压扁
- 棋盘格自动生成器——四种格式(格雷码棋盘格、圆点、二维码棋盘格)
- C语言_回文字符串的判断
- 容天服务器4450系统密码,金铂gob q7-f手机忘记开机密码怎么办
- [转载]playframework的视频短片
- IT研发人员不能说的秘密-13种泄密方式
热门文章
- 单片机实验报告-片内外RAM的数据转移
- 2016年计算机辅助设计试题,cad考试题「附答案」
- JS中的innerHTML和outerHTML区别
- 贵州大学计算机网络试题,贵州大学计算机基础考试题库.doc
- iPhone4s/iPad2无shsh降级iOS6.1.3
- hg8120c 维修使能工具_ONT 用户手册(中国移动) V300R016C10.doc
- HDOJ(航电)题目分类大全
- 超详细的 Python 方法、函数总结
- Paraview源码解析7:vtkTransform类
- 中职计算机ps教案ppt,photoshop课件ppt