跳跃游戏2

分析

个人比起 55 题更难了。 这题的重点在于如何进行「贪心」地向后查找。 以 [2, 3, 1, 1, 4] 为例: i = 0 时,最大跳跃距离为 2, i = 1 时,最大跳跃距离为 3。 因此,我们可以维护一个当前可到达的边界 max_jump。 到达边界时,更新边界值并增加跳跃次数。

解答

class Solution {
public:
int jump(vector<int> &nums) {
auto count = 0;
auto end = 0;
auto max_jump = 0;
auto n = nums.size();
for (auto i = 0; i < n - 1; ++i) {
max_jump = max(max_jump, nums[i] + i);
if (max_jump >= n - 1)
return count + 1;
if (i == end) {
end = max_jump;
count++;
}
}
return count;
}
};
返回文章列表