LeetCode--045--跳跃游戏II(java)

摘要:
给定一个非负整数数组,你最初位于数组的第一个位置。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入:[2,3,1,1,4]输出:2解释:跳到最后一个位置的最小跳跃数是2从下标为0跳到下标为1的位置,跳1步,然后跳3步到达数组的最后一个位置。8maxNext=Math.max;9if{10res++;11curMax=maxNext;12}13}14returnres;15}16}广度优先BFS:在当前能走的最大长度范围内不断搜索能走的最大长度,一旦超过总长度,返回结果.TIME:OSPACE:O1classSolution{2publicintjump{3ifreturn0;4intcurMax=0;5intmaxNext=0;6intres=0;7inti=0;8while{9res++;10for{11maxNext=Math.max;12if{13returnres;14}15}16curMax=maxNext;17}18return0;19}20}2019-05-0320:26:42

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

示例:

输入: [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2
    从下标为0跳到下标为1的位置,跳1步,然后跳3步到达数组的最后一个位置。

说明:

假设你总是可以到达数组的最后一个位置。

贪心:curMax当前能走的最大长度,maxNext最终能走的最大长度

TIME:O(N)

SPACE:O(1)

1 classSolution {
2     public int jump(int[] nums) {
3         if(nums.length < 2 || nums==null)return 0;
4         int curMax = 0;
5         int maxNext = 0;
6         int res = 0;
7         for(int i = 0;i < nums.length - 1;i++){//一定会走到最后,则res多加了一个1,所以让其走到倒数第二个数字停止。
8             maxNext = Math.max(maxNext,nums[i]+i);
9             if(i ==curMax){
10                 res++;
11                 curMax =maxNext;
12 }
13 }
14         returnres;
15 }
16 }

广度优先BFS:

在当前能走的最大长度范围内不断搜索能走的最大长度,一旦超过总长度,返回结果.

TIME:O(N)

SPACE:O(1)

1 classSolution {
2     public int jump(int[] nums) {
3         if(nums.length < 2 || nums==null)return 0;
4         int curMax = 0;
5         int maxNext = 0;
6         int res = 0;
7         int i = 0;
8         while(curMax - i + 1 > 0){
9             res++;
10             for(;i<=curMax;i++){
11                 maxNext=Math.max(maxNext,nums[i]+i);
12                 if(maxNext >= nums.length-1){
13                     returnres;
14 }
15 }
16             curMax =maxNext;
17 }
18         return 0;
19 }
20 }

2019-05-0320:26:42

免责声明:文章转载自《LeetCode--045--跳跃游戏II(java)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇UCOSIII任务挂起和恢复Unity3d与android通信下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

基于vue的颜色选择器vue-color-picker

项目中有用到颜色选择器的童鞋们可以看过来了关于color-picker的jquery的插件是有蛮多,不过vue组件没有吧,反正我没有找到,虽然element-ui里面有这个,但是你愿意为了一个小功能去引入这么大的依赖库吗?...

使用事务和SqlBulkCopy批量插入数据

类似与MicrosoftSQLServer包中名为bcp的命令行应用程序。但是使用SqlBulkCopy类可以编写托管代码解决方案,性能上优于bcp命令行应用程序,更优于如Insert方式向SQLServer表加载大量数据。SqlBulkCopy可以应用到大批量数据的转移上,而不管数据源是什么。之前在做winform开发的时候,发现当datagridview...

windows 常用命令行操作

目录操作˃pwd打印当前工作目录,通过此关键词可以查看当前所处的路径˃cd更改目录,用于多个目录之间的切换具体输入:cd目录名cd目录名/子目录名(可通过此方式到达最底层的目录)cd~(返回home目录)cd..(返回上一级目录)cd../..(返回上两级目录)cd盘符名:(不同盘符间跳转,cd后面跟上路径则可实现精准跳转)˃mkdir创建目录具体输入:mk...

Linux系统glibc库版本信息查看

有时我们经常需要检查当前系统的glibc版本。您可以按如下方式进行检查:/lib/libc。所以。6有时:/lib/x86-64-linux/libc。因此6.将文件作为命令执行。为什么库可以直接运行?Glibc是gnu发布的libc库,即c运行时。glibc是linux系统中最低级别的api,几乎任何其他运行时都将依赖glibc。Gcc和libc是相互依赖...

浅析前端常见文件下载的9种场景:Blob基础知识/组成/Blob URL、a标签下载、showSaveFilePicker API下载(兼容性差)、FileSaver.js库下载、Zip下载(JSZip库)、附件形式下载(设置Content-Disposition)、base64格式下载(需转为blob)、分块传输下载、HTTP范围请求下载、大文件分块并行下载

它主要涉及九种文件下载场景。在浏览器端文件下载场景中,JavaScript中的blob类型对象表示一个不可变的原始数据类文件对象。在JavaScript中,您可以通过blob构造函数创建blob对象,blob构造函数表示要放入blob的数组内容的MIME类型。行终止符将更改为适合主机操作系统文件系统的新行字符,允许Blob和file对象用作图像的URL源、下...

pycharm最新版本激活码(永久有效) python安装教程

输入python以查看当前版本的python。您可以输入“print'helloworld”并单击下载以启动PyCharm://pan.baidu.com//1eVdm4dUPKn3ZY_Xj kqNXw提取代码:l83f2,下载破解补丁(版本2018.3.5)下载链接至地址:...