每日一题(10)
55. 跳跃游戏
class Solution {
public:bool canJump(vector<int>& nums) {int count = 0;for (int i = 0; i <= count; ++i) {// 更新能到达的最远位置count = max(count, i + nums[i]);// 如果已经可以到达最后一个位置if (count >= nums.size() - 1) return true;}return false;}
};
不需要知道具体怎么跳,只需要知道最远能跳到哪儿对于每个位置,我们关心的是这个位置是否能够到达?从这个位置能跳到多远?
这个算法的美妙之处在于它用局部最优选择(在每个位置更新能到达的最远距离)来达到全局最优解(判断是否能到达终点)。