LeetCode面试经典150题 做题笔记(五)

跳跃游戏

自己想出来的解法:

思路:

模拟的思想,从最后一个元素开始,找到能到达最后一个元素的最近元素,在寻找过程中若找不到前面描述的元素则返回false,然后递归调用该判断函数,递归结束点为index==0,此时返回true。

代码:

性能:

分析:

虽然时间复杂度仍然为O(n),但是递归的引入一定程度上降低了其时间与空间上的运行效率。

可能的最优解法(来自leetcode官方题解):

思路:

倒序遍历数组,维护一个当前能到达终点的最早出发点,遍历结束后,判断最早出发点是否为0。

代码:

性能:

分析:

在时间和空间方面同时拥有良好的性能。

跳跃游戏 II

自己想出来的解法(与最优解法类似):

思路:

正向遍历数组,维护一个当前能达到的最远索引,当遍历索引等于该最远索引时,重新更新最远索引,并把步数+1。

代码:

性能:

分析:

在时间和空间方面同时拥有良好的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值