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=

随便看看

Protobuf动态解析那些事儿

收到protobuf数据后,如何自动创建特定的ProtobufMessage对象,然后对其进行反序列化。有关Protobuf的技术介绍,请参阅Google协议缓冲区的在线帮助页面或IBM developerworks上的文章“Google协议缓冲的使用和原理”。protobuffer的动态分析并没有在谷歌protobuffer官网上介绍。有关实现,请参阅淘宝...

甲骨文ARM架构云服务器部署宝塔+.net 5.0

前言前段时间,甲骨文推出了一款采用ARM架构的免费服务器,可以申请永久免费的4核、24GB内存、4G带宽,非常棒。然而,由于ARM架构的CPU。例如,编译和安装MySQL 5.7是可以的,所以不需要麻烦。创建后,ssh被连接并切换到根帐户sudo-i II。安装宝塔。创建服务器。更新包并安装BBR后,您可以使用官方脚本yu_install-wget&...

com.aliyun.openservices.shade.com.alibaba.fastjson.JSONException: exepct '[', but {, pos 1, line 1, column 2

错误报告的原因:您放置了一个非List对象,但希望从packagetest中取出List对象;导入java.text。SimpleDateFormat;导入java.util。阵列列表;导入java.util。日期导入java.util。列表importcom.alibaba.fastjson。JSON;导入com.alibaba.fastj...

SAP OBA1 外币评估是基于财务目的,为了不影响报表而做的估算值,在月末进行评估,在下月初进行冲回。

评估报告按行项目显示结果。4.评估策略外币的未清项评估有三种策略:1)期末评估,下期初冲回。因此目前每年底改变外币汇率时进行外币余额和未清项的评估,不冲回。②资产负债表指定日,一般是一年的最后一天。③资产负债表准备评估。如果选择该项,则视为年结评估,不能产生冲销凭证。外币未清项评估是按借贷分别统计后做的调整凭证。...

愿你走出半生,归来仍是Java Parser

几天前,我的一个朋友给了我一个Haskell问题嘿,MK。假设我有一个BNF,我在Haskell中有一个这个BNF的解析器。现在,我想为这个BNF换一条线。是否有任何方法可以在不接触BNF解析器代码的情况下扩展BNF解析器?让我们想想,这个x是什么样的变体?请记住,传入的参数不是self,而是super。好了,openrecursion已经准备好了,剩下的是...

uni-app为组件uni-icons增加自定义图标(超简单)

1、找到需要的图标,这里我是在阿里巴巴图标库(https://www.iconfont.cn/)中找到对应的图标下载为svg格式备用:2、通过在线ttf编辑器打开uni.ttf文件(http://fontstore.baidu.com/static/editor/index.html#),打开之后可以看到所有的uni所有图标都在里面3、导入第一步下载好的图标...