c++代码实现:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
时间: 2024-09-07 16:03:44 浏览: 17
这个问题描述的是一个典型的跳跃游戏问题。在C++中,我们可以使用贪心算法来解决这个问题。基本思路是遍历数组,对于每一个可以到达的位置,我们更新能够到达的最远距离。如果在某个位置上,我们发现自己已经无法到达数组的末尾,那么我们就可以判断出不能完成跳跃。如果能够到达或者越过数组的末尾,则表示可以完成跳跃。
以下是一个可能的C++代码实现:
```cpp
#include <vector>
#include <algorithm>
bool canJump(std::vector<int>& nums) {
int n = nums.size();
int farthest = 0;
for (int i = 0; i < n; ++i) {
// 如果当前的位置超过了我们能够达到的最远距离,说明无法继续向前
if (i > farthest) return false;
// 更新最远能够到达的位置
farthest = std::max(farthest, i + nums[i]);
// 如果已经能够到达或越过最后一个位置,直接返回true
if (farthest >= n - 1) return true;
}
return false;
}
```
在这段代码中,我们定义了一个变量`farthest`来记录我们能够到达的最远距离。在遍历数组的过程中,如果发现`i`(当前位置的索引)超过了`farthest`,则说明无法继续前进,返回`false`。如果`i`加上它对应的跳跃距离超过了当前的`farthest`,则更新`farthest`。如果在遍历过程中`farthest`超过了或等于数组的最后一个下标(`n - 1`),则说明可以到达或跳过最后一个位置,返回`true`。