贪心算法-数组跳跃游戏(mid)

目录

一、问题描述

二、解题思路

1.回溯法

2.贪心算法

三、代码实现

1.回溯法实现

2.贪心算法实现

四、刷题链接


一、问题描述

二、解题思路

1.回溯法

        使用递归的方式,找到所有可能的走步方式,并记录递归深度(也就是走步次数),当走完数组时更新最小步长并返回。

        这种方式的缺点就是耗时很长,还容易产生栈溢出的问题

2.贪心算法

        直接通过画图来说明一下过程,找局部最优解扩展到全局最优解:

这里注意:当 i >=maxReach时,说明不能到达数组末尾,返回-1

这里可以用下面的示例按照上面的执行过程模拟一下,理解一下到达不了数组末尾是一个什么过程。

三、代码实现

1.回溯法实现

import java.util.*;public class Solution {int minstep=-1;/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型一维数组 * @return int整型*/public int minJumpStep (int[] nums) {// 首先对常见的几种场景进行判断if(nums.length==0||(nums.length>1&&nums[0]==0)){return -1;}else if(nums.length==1){return 0;}//使用回溯法findMinStep(nums,0,0);return minstep;}//回溯法对所有可能的情况进行判断public void findMinStep(int[] nums,int nowIndex,int steps){if(nowIndex>=nums.length-1){if(minstep==-1){minstep=steps;}else{minstep=Math.min(minstep,steps);}return;}if(nums[nowIndex]==0){return;}else{for(int i=1;i<=nums[nowIndex];i++){findMinStep(nums,nowIndex+i,steps+1);} }}
}

2.贪心算法实现

import java.util.*;public class Solution {int minstep=-1;/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型一维数组 * @return int整型*/public int minJumpStep (int[] nums) {// 首先对常见的几种场景进行判断if(nums.length==0||(nums.length>1&&nums[0]==0)){return -1;}else if(nums.length==1){return 0;}//使用贪心算法//定义变量://nowstep 记录当前走了多少步//current 记录nowstep可以走到的最远距离//maxReach 记录走到current后到下一次更新step之前可以到达的最远距离//初始时,步数为1,走一步以后所在位置nums[0],最远可到达nums[0]int nowstep=1,current=nums[0],maxReach=nums[0];for(int i=1;i<nums.length;i++){maxReach=Math.max(maxReach,i+nums[i]);if(i>=maxReach){return -1;}if(current>=nums.length-1){break;}if(i==current){nowstep++;current=maxReach;}}return nowstep;}}

四、刷题链接

跳跃游戏(三)_牛客题霸_牛客网

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

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

相关文章

玩转ChatGPT:最全学术论文提示词分享【上】

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正迅速改变各行各业的运作方式。特别是&#xff0c;OpenAI的ChatGPT等语言模型以其强大的文本生成能力&#xff0c;…

使用Ant-Design-Vue实现动态表头与数据填充的实战指南

好的&#xff0c;我将为你写一篇关于如何使用Ant-Design-Vue动态生成表头并填充数据的文章。这篇文章将包括一个基本的介绍&#xff0c;详细的步骤和示例代码&#xff0c;以帮助你实现这一功能。 --- # 使用Ant-Design-Vue动态生成表头并填充数据 在现代前端开发中&#xff…

Android ViewPager和ViewPager2的区别

一、实现方式 ViewPager内部是通过继承ViewGroup来实现的&#xff0c;ViewPager2内部是通过RecyclerView来实现的&#xff08;效率更高&#xff09; 二、支持方向 ViewPager只能横向滑动&#xff0c;ViewPager2可以横向以及竖向滑动 三、采用的适配器 ViewPager有两个适配…

算法:70. 爬楼梯

70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示…

【CTF MISC】XCTF GFSJ0170 János-the-Ripper Writeup(文件提取+ZIP压缩包+暴力破解)

Jnos-the-Ripper 暂无 解法 用 winhex 打开&#xff0c;提到了 flag.txt。 用 binwalk 扫描&#xff0c;找到一些 zip 压缩包。 binwalk misc100用 foremost 提取文件。 foremost misc100 -o 100flag.txt 在压缩包里。 但是压缩包需要解压密码。 用 Ziperello 暴力破解。 不…

mac安装nigix且配置 vue/springboot项目(本地/服务器)

一、mac安装Nigix 1. 查看是否存在 nginx 执行brew search nginx 命令查询要安装的软件是否存在 brew search nginx 2. 安装nginx brew install nginx 3. 查看版本 nginx -v 4. 查看信息 查看ngxin下载的位置以及nginx配置文件存放路径等信息 brew info nginx 下载的存…

Angular 由一个bug说起之六:字体预加载

浏览器在加载一个页面时&#xff0c;会解析网页中的html和css&#xff0c;并开始加载字体文件。字体文件可以通过css中的font-face规则指定&#xff0c;并使用url()函数指定字体文件的路径。 比如下面这样: css font-face {font-family: MyFont;src: url(path/to/font.woff2…

【路径规划】三维深度矩阵寻路算法

在三维空间中寻路相较于二维空间更为复杂&#xff0c;因为需要处理额外的维度。下面是一个示例&#xff0c;展示了如何使用深度优先搜索&#xff08;DFS&#xff09;算法在三维矩阵中寻找路径。 首先&#xff0c;我们需要定义三维矩阵&#xff0c;并编写一个递归的DFS函数来寻…

IDEA 中设置 jdk 的版本

本文介绍一下 IDEA 中设置 jdk 版本的步骤。 一共有三处需要配置。 第一处 File --> Project Structure Project 和 Modules 下都需要指定一下。 第二处 File --> Settings 第三处 运行时的配置

Linux基础2-基本指令4(cp,mv,cat,tac)

上篇文章我们说到了rmdir,rm,man,echo.重定向等知识。 Linux基础1-基本指令3-CSDN博客 本文继续梳理其他基础指令 1.本章重点 1.使用cp命令拷贝文件 2.使用mv命令移动文件 3.使用cat&#xff0c;tac查看小文本文件 2.cp命令 在linux中使用cp命令来拷贝粘贴文件 cp src(原文…

解决Nginx出现An error occurred问题

每个人遇到Nginx的An error occurred情况可能都不一样&#xff08;见图1&#xff09;&#xff0c;Nginx造成该错误的原因&#xff1a; 1. 我在配置域名解析成IP时&#xff0c;没有把所有解析配置都修改&#xff0c;见图2&#xff1a;解析 *.hanxiaozhang.xyz 配置的是新IP地…

【名词解释】Unity的Inputfield组件及其使用示例

Unity的InputField组件是一个UI元素&#xff0c;它允许用户在游戏或应用程序中输入文本。InputField通常用于创建表单、登录界面或任何需要用户输入文本的场景。它提供了多种功能&#xff0c;比如文本验证、占位符显示、输入限制等。 功能特点&#xff1a; 文本输入&#xff…

如何发布自己的npm插件包

随着JavaScript在前端和后端的广泛应用,npm(Node Package Manager)已成为JavaScript开发者不可或缺的工具之一。通过npm,开发者可以轻松共享和使用各种功能模块,极大地提高了开发效率。那么,如何将自己开发的功能模块发布为npm插件包,与全球的开发者共享呢?本文将进行全…

Nvidia Jetson/Orin/算能 +FPGA+AI大算力边缘计算盒子:潍柴雷沃智慧农业无人驾驶

潍柴雷沃智慧农业科技股份有限公司&#xff0c;是潍柴集团重要的战略业务单元&#xff0c;旗下收获机械、拖拉机等业务连续多年保持行业领先&#xff0c;是国内少数可以为现代农业提供全程机械化整体解决方案的品牌之一。潍柴集团完成对潍柴雷沃智慧农业战略重组后&#xff0c;…

JSON5:JSON的现代化扩展

JavaScript Object Notation (JSON)&#xff0c;被广泛应用于网络传输、配置文件等许多地方&#xff0c;因其简洁、易读的特性而备受欢迎。然而&#xff0c;JSON不是无可指摘的&#xff0c;限制太过严格&#xff0c;使得一些场景变得棘手。这时候&#xff0c;JSON的超集——JSO…

轻松解决问题!教你文件怎么解除只读模式!

在日常使用电脑时&#xff0c;我们有时会遇到文件或文件夹被设定为只读模式的情况&#xff0c;这可能会限制我们对文件的修改和编辑。然而&#xff0c;解除只读模式并获得文件的完全控制是一个相对简单的过程&#xff0c;只需要掌握一些基本的技巧和方法。在本文中&#xff0c;…

数据分析面试常问问题(二)(SQL、统计学、业务方面等)

一、数据分析之业务指标高频面试题 1.关于视频app&#xff08;比如爱奇艺&#xff09;首页推荐的推荐顺序&#xff0c;你会考虑哪些指标&#xff1f; &#xff08;1&#xff09;用户行为数据&#xff1a;浏览、点击、播放、搜索、收藏、点赞、转发、滑动、在某个位置的停留时…

java版spring cloud 知识付费平台的功能模块与子模块划分

随着互联网技术的飞速发展&#xff0c;知识付费平台已经成为了我国在线教育领域的一颗新星。这些平台以用户需求为出发点&#xff0c;围绕高质量的内容打造&#xff0c;利用互联网技术为用户提供了一个便捷、高效的学习环境。它们汇聚了丰富的专业知识&#xff0c;覆盖了职业技…

【时序约束】如何确定输入输出信号的时序约束值

确定输入输出信号的时序约束值是 FPGA 设计中的一个重要步骤&#xff0c;它涉及到对信号传输时间和 FPGA 内部时序要求的准确理解。以下是确定时序约束值的一些关键步骤&#xff1a; 1. 理解信号特性 输入信号&#xff1a;考虑输入信号的来源、传输距离、走线长度以及是否经过…

打造精美电子画册,提升企业形象的方法

在当今数字化时代&#xff0c;企业形象的表达方式正在发生深刻变革。精美电子画册作为一种新兴的传播媒介&#xff0c;不仅能够展现企业风采、提升品牌价值&#xff0c;还能够吸引潜在客户、增强市场竞争力。 接下来告诉大家一些简单的制作方法&#xff0c;可以收藏起来哦 1.首…