题目:
动态规划问题。nums[i]代表可以前进多少步。判断能否从nums[0]走到nums末尾。
思路:
假设从nums[0]可以走到nums[i+1],那么从nums[0]肯定可以走到nums[i],所以从数组末尾向前遍历。设置destination(目的地)为数组的最后一个元素的index,向前遍历。比如,若destination=i+1,而从nums[i]可以跳到destination,此时更新destination。遍历完后,若destination为0,则证明可以从nums[0]跳到最后。
代码:
class Solution: def canJump(self, nums): destination = len(nums) - 1 i = destination - 1 while i >= 0: if nums[i] >= destination - i: destination = i i -= 1 if destination == 0: return True else: return False