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还提供了其他几种常见的文本呈现方法:v-text:更新元素的innerTextv html:更新元素一次的innerHTMLv:静态插值v-pre:以原始格式输出v-cooke:保留元素上的指令,直到相关实例完成编译˂!幸运的是,Vue还提供了v-text和v-html来呈现文本或元素。...

试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

解决方法:iis应用程序池--˃高级设置--˃启用32位应用程序˂!body{font-family:"Verdana";font-weight:normal;font-size:.7em;color:black;}p{font-family:"Verdana";font-weight:normal;color:black;margin-top:-5px}b...

【工具技巧】:sublime notepad++ 多行编辑

将光标定位到一行-˃ctrl+shift+↑↓, 上下移动一行。选择-˃ctrl+shift后+↑↓, 上下移动所选区域。再次按6:Ctrl+Shift+Enter在光标前插入一行。...

Maven settings.xml配置详解

让我们来谈谈设置。对于Maven,xml相当于全局配置,用于所有项目。maven2-xml中有两个设置,作为全局配置位于maven2的安装目录conf下。对于团队设置,一致的定义是关键,因此maven2/conf Xml下面的设置是团队的通用配置文件。当然,每个成员都需要特殊的用户定义设置,例如用户信息,其他设置也是如此。xml用作本地配置。默认位置为:${...

动态表单

在完成数据表元数据的维护后,关键点是生成表单。表单生成主要基于上表,该表记录了类型、长度、字段是否可以为空、界面显示方法以及表单何时生成等一系列信息。用这个生成表单并不难,嗯,有句话说得好,“困难的事情必须容易完成”。最后,最困难的事情是由一些简单的问题组成的。由于现在使用了struts 2,因此需要对接口进行一系列判断,代码如下:˂s:iftest='#f...

EasyPoi导入验证功能

1准备好要导入的Excel,注意Excel的标题要和domain中的@Excel一样1导入验证包支持˂!...