当前位置:   article > 正文

【编程算法】跳跃游戏ⅠⅡⅢ(Python解法)_python跳跃游戏算法

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 , 所以你永远不可能到达最后一个位置。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/208928
推荐阅读
相关标签