【动态规划】45. 跳跃游戏 II

45. 跳跃游戏 II

解题思路

  • int[] memo;:定义一个数组memo,用来作为备忘录,存储从每个索引位置跳到数组末尾所需的最小跳跃次数。

  • Arrays.fill(memo, n);:在开始计算之前,先将memo数组的所有元素初始化为n。这里的n是输入数组nums的长度,初始化为n是因为从任何位置到最后位置的跳跃次数不可能大于n-1。

  • dp(nums, 0);:调用dp函数,从索引0开始计算到达最后位置的最少跳跃次数。

  • dp函数:这个函数是解题的核心,它递归地计算从当前位置p到最后位置所需的最少跳跃次数。

  • 如果p已经大于或等于n-1(即已经到达或超过了数组的最后位置),则不需要再跳跃,返回0。

  • 如果memo[p]不等于n,说明这个位置的最少跳跃次数已经被计算过了,直接返回memo[p]的值。

  • 对于当前位置p,尝试所有可能的跳跃步数(从1到nums[p]),并递归地调用dp函数计算每一种选择后的最少跳跃次数。选择所有可能中的最小值加1(当前这一跳)作为memo[p]的值。

class Solution {// List<Integer> memo = new ArrayList<>();// 作为备忘录记忆int[] memo;// 记录每一个索引位置跳跃最后一个位置要多少次public int jump(int[] nums) {// 动态规划int n = nums.length;// 初始化备忘录memo = new int[n];Arrays.fill(memo,n);// 所有元素全部初始化为n 因为从0 到n - 1 不会超过n - 1return dp(nums,0);}int dp(int[] nums,int p){// 返回值  从索引p跳到最后一个位置所需要的最少次数int n = nums.length;if(p >= n - 1){return 0;}// 判断子问题是不是计算过if(memo[p] != n){return memo[p];}int steps = nums[p];// 然后从当前位置可以选择跳跃 1 2 3 4 5 ... steps步for(int i = 1; i <= steps;i++){// 跳跃i步 到下一个位置 然后计算结果int subProbelm = dp(nums, p + i);// 取其中最小的作为最终结果memo[p] = Math.min(memo[p],subProbelm + 1);}return memo[p];}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的宏函数与宏定义

C语言中的宏函数与宏定义 从开始写C语言到生成执行程序的流程大致如下&#xff1a; 预处理工作是系统引用预处理程序对源程序中的预处理部分做处理&#xff0c;而预处理部分是指以“#”开头的、放在函数之外的、一般放在源文件的前面的预处理命令&#xff0c;如&#xff1a;包…

流密码之线性反馈移位寄存器,以习题:n=4的LFSR,输出序列满足ki-4+ki-3+ki=0,初始状态为1000,求最终输出序列 为例

文章重点 关于线性反馈移位寄存器的一些知识点本期就不详细介绍了,本期重点在于讲解习题,以使大家能顺利应对平时作业及期末考试。 习题 习题1如下:n=4的LFSR。输出序列满足ki-4+ki-3+ki=0。 初始状态为1000。求不同时刻的状态及最终输出序列。 分析思路 思路:我们知道…

HTTP有什么缺陷,HTTPS是怎么解决的

缺陷 HTTP是明文的&#xff0c;谁都能看得懂&#xff0c;HTTPS是加了TLS/SSL加密的&#xff0c;这样就不容易被拦截和攻击了。 SSL是TLS的前身&#xff0c;他俩都是加密安全协议。前者大部分浏览器都不支持了&#xff0c;后者现在用的多。 对称加密 通信双方握有加密解密算法…

python自学3

第一节第六章 数据的列表 列表也是支持嵌套的 列表的下标索引 反向也可以 嵌套也可以 列表的常用操作 什么是列表的方法 学习到的第一个方法&#xff0c;index&#xff0c;查询元素在列表中的下标索引值 index查询方法 修改表功能的方法 插入方法 追加元素 单个元素追加 多…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族&#xff0c;结果&#xff0c;&#xff01;&#xff01;&#xff01;&#xff01; 究竟能否让卷积神经网络重获新生&#xff1f; 1.数据准备 代码地址&#xff1a;https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

教育知识与能力保分卷一(中学)

2.在教育学的发展过程中&#xff0c;代表马克思主义的教育学著作是&#xff08;A &#xff09;。 A.凯洛夫的《教育学》 B.赞可夫的《教学与发展》 C.杜威的《民主主义与教育》 D.昆体良的《论演说家的教育》 8.小贺在一次期…

电脑不小心格式化了,怎么恢复?

在这个数字化时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;有时我们可能会不小心格式化电脑硬盘&#xff0c;导致重要数据的丢失。那么&#xff0c;电脑不小心格式化了&#xff0c;怎么恢复&#xff1f; 别着急&#xff0c;在本篇攻略中&…

开源模型应用落地-qwen1.5-7b-chat与vllm实现推理加速的正确姿势(八)

一、前言 就在前几天开源社区又发布了qwen1.5版本,它是qwen2模型的测试版本。在本篇学习中,将集成vllm实现模型推理加速,现在,我们赶紧跟上技术发展的脚步,去体验一下新版本模型的推理质量。 二、术语 2.1. vLLM vLLM是一个开源的大模型推理加速框架,通过PagedAttention…

记一次openfeign反序列化异常复盘

前言 之前业务部门有2个通用响应类&#xff0c;一个是负责和前端交互的响应类AjaxResult,一个是负责和后端RPC接口交互的响应类RpcResult。一开始这两个响应类的值字段都一样&#xff0c;形如下 private Boolean success;private String message;private Integer code;private…

掌握PDF全面指南:Python开发者的高效编程技巧

掌握PDF全面指南&#xff1a;Python开发者的高效编程技巧 简介PDF基础知识PDF的结构常见用途PDF在开发中的挑战 PDF处理库介绍PyPDF2ReportLabPDFMiner辅助库 读取和分析PDF文件使用PyPDF2读取PDF文件提取PDF中的文本和元数据分析PDF结构和内容 编辑和修改PDF文件合并多个PDF文…

如何制作一个分销商城小程序_揭秘分销商城小程序的制作秘籍

打造赚钱神器&#xff01;揭秘分销商城小程序的制作秘籍 在这个数字化高速发展的时代&#xff0c;拥有一个属于自己的分销商城小程序&#xff0c;已成为众多商家和创业者的必备利器。它不仅能够快速搭建起自己的在线销售渠道&#xff0c;还能够利用分销模式&#xff0c;迅速裂…

C# 对文件、文件夹的操作

在使用后面的代码前&#xff0c;需要&#xff1a; using System; using System.IO;C# 对文件的操作 判断文件是否存在 string filePath "E:\\new folder\\test\\myfile.xls"; if (File.Exists(filePath)) {// 如果文件存在 } else {// 如果文件不存在 }复制文件 …

中级前端面试整理-上篇

JS的基本类型 JavaScript中的基本类型是指&#xff1a;那些存储在内存中的值类型&#xff0c;他们是不可以变的、意味着一旦创建&#xff0c;值类型就不能改变。 JS的7种基本类型 布尔类型(Boolean): 表示true或者false数字类型(Number): 表示整数、浮点或者NaN字符串类型(St…

了解拒绝服务攻击:攻击类型、影响和防御措施

拒绝服务攻击&#xff08;Denial of Service&#xff0c;简称DoS&#xff09;是一种广泛存在的网络安全威胁&#xff0c;旨在使目标系统无法提供正常的服务&#xff0c;使其服务不可用或严重受限。在本文中&#xff0c;我们将深入探讨拒绝服务攻击的不同类型、其对网络系统和业…

安全特性 悬垂指针

英文名称 Dangling point&#xff0c;它还有一个兄弟叫 wild point - 野指针。 简单的对Dangling point做一个类比&#xff1a;我换手机号码了&#xff0c;但是没有通知老板&#xff0c;老板通讯录存的是我的旧号码。然后老板打电话有两种可能&#xff1a;打不通电话或者电话打…

pytorch 自定义函数

pytorch 自定义函数 介绍&#xff1a;https://zhuanlan.zhihu.com/p/344802526 主要构建 static method forward 和 backward 比如 layernorm: 参考&#xff1a;https://github.com/zhangyi-3/KBNet/blob/main/basicsr/models/archs/kb_utils.py 导数的推导&#xff1a;http…

Linux常用命令(超详细)

一、基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启 1.2 帮助命令 –help命令 shutdown --help&#xff1a; ifconfig --help&#xff1a;查看…

SpringBoot 接口报错该如何解决?

在Spring Boot应用中&#xff0c;接口报错可能由多种原因引起&#xff0c;包括但不限于业务逻辑错误、异常处理不当、依赖库问题、配置错误等。解决接口报错的过程需要分析具体的错误信息、排查可能的原因&#xff0c;并采取相应的调试和修复措施。 以下是解决Spring Boot接口…

AWS ECR(AWS云里面的docker镜像私库)

问题 上一篇文章&#xff0c;在AWS云上面部署了k8s集群&#xff0c;这次接下来&#xff0c;需要在一个docker镜像私库。 步骤 创建docker镜像私库 打开AWS ECR主页&#xff0c;创建一个docker镜像私库&#xff0c;如下图&#xff1a; 设置私有镜像库名称&#xff0c;直接创…

AI短视频矩阵运营软件|抖音视频矩阵控制工具

【罐头鱼AI传单功能介绍】 罐头鱼AI传单是一款专为短视频矩阵运营而设计的智能软件&#xff0c;旨在帮助用户高效管理和运营多个抖音账号&#xff0c;并提供一系列强大的功能来优化视频内容创作和发布流程。QQ:290615413以下是软件框架&#xff0c;详细介绍其功能和特点&#…