跳跃游戏
自己想出来的解法:
思路:
模拟的思想,从最后一个元素开始,找到能到达最后一个元素的最近元素,在寻找过程中若找不到前面描述的元素则返回false,然后递归调用该判断函数,递归结束点为index==0,此时返回true。
代码:
性能:
分析:
虽然时间复杂度仍然为O(n),但是递归的引入一定程度上降低了其时间与空间上的运行效率。
可能的最优解法(来自leetcode官方题解):
思路:
倒序遍历数组,维护一个当前能到达终点的最早出发点,遍历结束后,判断最早出发点是否为0。
代码:
性能:
分析:
在时间和空间方面同时拥有良好的性能。
跳跃游戏 II
自己想出来的解法(与最优解法类似):
思路:
正向遍历数组,维护一个当前能达到的最远索引,当遍历索引等于该最远索引时,重新更新最远索引,并把步数+1。
代码:
性能:
分析:
在时间和空间方面同时拥有良好的性能。