跳跃游戏精细化

这篇具有很好参考价值的文章主要介绍了跳跃游戏精细化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

跳跃游戏

​ 给定一个数组,每个元素代表跳跃的距离,判断是否能从起点出发,跳到数组的末尾。

​ 例如:给定一数组[3,7,8,1,5],从起点出发,可以跳跃3步,跳到位置3,然后跳1步,跳到位置4,跳4步到达末尾

思路分析

  • 定义一个变量,用来初始化当前能到达最远位置
  • 遍历数组,获取当前位置索引及值,这里使用到enumerate函数,用来实现能够同时获取到当前位置及值。
  • 若当前位置超出了能够到达的最远位置,则无法继续跳跃
  • 使用 max数更新 最远距离,确保它总是表示当前能到达的最远位置。
  • 遍历完成后,检查 max_distance 是否至少为数组长度减一,即是否能到达最后一个位置

enumerate简述

​ Python内置的一个函数,它用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。enumerate返回的是一个枚举对象,它包含元组,每个元组包含两个元素,一个是索引值,一个是原始数据值。

举例:

for index, value in enumerate(['a', 'b', 'c']):  
    print(f"Index: {index}, Value: {value}")

输出结果:

Index: 0, Value: a  
Index: 1, Value: b  
Index: 2, Value: c

贪心算法简述

​ 贪心算法是在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。是从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快地求得更好的解。并且希望通过所做的局部最优选择来导致最终的全局最优解时,这样的算法就被称为贪心算法

​ 在canJump函数中,贪心策略体现在每一步都更新max_distance为当前位置能够到达的最远距离。这意味着在每一步,算法都在尽可能地扩大能够到达的范围。

代码实现

def Jumping_Game(nums):
    max_distance = 0  # 记录当前能够到达的最远位置
    for i, jump in enumerate(nums):  # 遍历数组,获取当前位置的索引和跳跃长度
        if i > max_distance:  # 如果当前位置超出最远能够到达的位置,则无法继续跳跃
            return False
        if i + jump >= len(nums) - 1:  # 如果能够到达或超过最后一个位置,则返回True
            return True
        max_distance = max(max_distance, i + jump)  # 更新最远能够到达的位置

    return False  # 遍历完数组后仍未到达最后一个位置,返回False
if __name__ == '__main__':
    list_nums = [3, 3, 1, 1, 4]
    print(Jumping_Game(list_nums))  
    print('-' * 31)

    list_nums2 = [3, 2, 1, 0, 4]
    print(Jumping_Game(list_nums2)) 

测试用例详述

测试用例一:list_nums = [3, 3, 1, 1, 4]

  • 从位置0开始,数值是3,意味着可以跳到位置0、1、2、3。

  • 一旦到达位置 1,发现从这个位置也可以跳跃的最大步数是 3,这意味着可以直接跳到位置 4(因为 1 + 3 >= 4)。在这种情况下,我们不需要遍历位置 2 或位置 3,已经找到了一条从位置 0 到位置 4 的路径。)。

    图例(表格方式,红色为跳跃数):
    跳跃游戏精细化

测试用例二:list_nums2 = [3, 2, 1, 0, 4]

  • 同样从位置0开始,数值是3,我们可以跳到位置0、1、2、3。

    更新max_distance为3。

  • 在位置1,数值是2,我们可以跳到位置1、2、3。此时max_distance仍然是3。

  • 在位置2,数值是1,我们只能跳到位置2或3。此时max_distance仍然是3。

  • 在位置3,数值是0,这意味着我们无法从这里跳到更远的位置。此时,i(当前位置)已经大于max_distance(最远能够到达的位置),所以函数返回False

图例(表格方式,红色为跳跃数):

总结

​ 关键在于每一步都尽可能地更新max_distance,从而确保我们不会错过任何可能到达数组的末尾路径。

​ 时间复杂度:O(n),代码遍历了数组nums一次,没有嵌套循环或其他会增加时间复杂度的操作。因此,时间复杂度是O(n),其中n是数组nums的长度。

​ 空间复杂度:O(1),代码中只使用了几个变量(如max_distance和i,jump)来追踪当前能够到达的最远位置,当前下标,当前位置的值。这些变量不随数组nums的大小变化而增加,因此空间复杂度是O(1)。文章来源地址https://www.toymoban.com/news/detail-855171.html

到了这里,关于跳跃游戏精细化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 金融客户敏感信息的“精细化管控”新范式

    目    录   01  客户信息保护三箭齐发,金融IT亟需把握四个原则‍ 02  制度制约阻碍信息保护的精细化管控 ‍‍‍‍‍‍‍ 03   敏感信息精细化管控范式的6个关键设计  04   分阶段实施,形成敏感信息管控的长效运营的机制 05   未来,新挑战与新机遇并存 01‍ 加强客户信

    2024年02月11日
    浏览(43)
  • jar包的精细化运营,Java模块化简介

    图:模块化手机概念 官方对模块的定义为:一个被命名的,代码和数据的自描述集合。( the module, which is a named, self-describing collection of code and data)。 早在Java7的时候就被提出,但由于其复杂性,不断跳票,直到Java9才有,那么Java模块化到底是什么,在实际开发中又有什么用

    2024年02月06日
    浏览(38)
  • 传感云智慧公厕综合解决方案,实现公厕精细化管理

    随着国家“公厕革命”建设工作的持续推动与科技创新技术的不断进步,人们对“方便”与“卫生”的要求越来越高,智慧公厕已然成为智慧城市建设规范下的公共厕所新形态,不仅可以解决传统公厕的脏乱差、异味和管理难题,同时可以为用户提供舒适的如厕体验。   那么

    2024年02月05日
    浏览(48)
  • HarmonyOS原生分析能力,即开即用助力精细化运营

    数据分析产品对开发者的价值呈现在两个层面,第一个是产品的层面,可以通过数据去洞察用户的行为,从而找到产品的优化点。另外一个就是运营层面,可以基于数据去驱动,来实现私域和公域的精细化运营。 在鸿蒙生态上,华为会融合多端多源数据,包括HarmonyOS的系统级

    2024年02月08日
    浏览(41)
  • 抖音小店怎么做精细化运营?保姆级教程分享,建议收藏慢慢看

    大家好,我是电商花花。 可能有些朋友只是看到网上会频繁的看到抖音小店无货源这个词,也有很多刚做抖店的说自己店铺不出单,或者出了几单后就没有流量,但是很多新手不知道怎么精细化运营店铺。 今天给大家分享一下,新手小白怎么做抖音小店精细化运营,我们就

    2024年01月16日
    浏览(42)
  • 城市精细化治理过程中的智能图像识别如何更精准、更智能?

    城市精细化治理任务旨在通过人工智能(AI)技术对城市治理过程中出现的问题事件(例如道路破损、垃圾乱放、占道经营等)进行智能图像识别,为城市治理人员针对性开展工作提供技术支持。 · 数据标注通常以事件标签标注+特定目标物矩形框标注形式呈现。 · 相关算法

    2023年04月08日
    浏览(45)
  • 无人机精细化巡检方案制定:提高效率与准确性的关键

    1. 精细化巡检的需求背景 效率与安全并重:传统的人工巡检面临时间消耗大、安全风险高等问题。而无人机巡检可以在较短时间内完成大面积的检查工作,并避免人员直接面对潜在的高风险环境。 细致与全面:随着技术的进步,越来越多的组织意识到精细化巡检的必要性。

    2024年02月11日
    浏览(33)
  • k8s通过sa和自建角色实现权限精细化分配

    角色role-sa 具有的权限仅仅是namespace planck内的所有pod的查看权限,以及deployment的查看权限,无权删除修改这些资源 为什么要授权是因为sa内的secrets里的token只有在dashboard内使用,而上面的角色和角色绑定都是dev这个namespace内的,这样绑定后,拿到token才可以登录到dashboard的首

    2024年02月13日
    浏览(41)
  • k8s通过系统配置文件kubeconfig文件实现权限的精细化分配

    k8s的apiserver地址为:https://xxx:6443 token=“xxx” cfssl 安装 cfssljson 安装 生产证书 1.设置集群参数 config文件引入集群ca证书,这里的set-cluster 可以任意设置,想叫什么集群名字都可以,我这里定义为mykubernetes,kubeconfig文件名称也随意定义,我这里定义为test.kubeconfig,此命令执行后

    2024年02月13日
    浏览(45)
  • RFM分析 | 一招搞定精细化客户管理,盒马鲜生等企业都在用

    阿里巴巴CEO张勇在盒马鲜生的管理会上说:“进行RFM用户分析 ,以数据驱动,精细化用户运营是核心。新模式要大胆假设小心求证,验证有效以后再快速复制。”RFM与精细化管理有什么关系? 1 什么是RFM分析? 2 如何应用RFM分析对用户细分? 3 盒马RFM 分析案例 4 RFM总结 互联

    2024年01月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包