题目:45. 跳跃游戏 II
思路
贪心法;
只需记录2个变量,当前点能达到的最远距离,和上一步能到达的最远距离;
(真有意思,代码随想录给出的是curDistance
,nextDistance
2个,和我命名不一样,是思考角度不同的缘故)
代码
class Solution {
public:int jump(vector<int>& nums) {int step = 0;int i;int cover1 = 0, cover2 = 0;if(nums.size() == 1){return 0;}for(i = 0; i < nums.size(); i++){// 当前点能达到的最大距离cover2 = max(cover2, nums[i]+i);// 上一步就只能到这了if(cover1 == i){step++;if(cover2 >= nums.size()-1){// 可以到终点了;break;}cover1 = cover2;} }return step;}
};
特殊情况:只有一个元素的时候,不需要跳,就直接到终点了(初始位置就在终点上);