class Solution {
public:
bool canJump(vector<int>& nums) {
//肯定可以用回溯来做
//
if (nums.size() == 1) return true; //如果只有一个数据,就直接true
int maxStep = 0 + nums[0]; //初始化最长能到位置
for (int i = 0; i < nums.size() - 1; ++i) {
if (maxStep >= nums.size() - 1) return true; //如果步数已经超过最后,就保证我们能够到最后
if (nums[i] == 0 && maxStep <= i) return false; //如果我遇见零了,而且我最长步数还不能跨越,就返回false
if (nums[i] != 0) maxStep = max(i + nums[i],maxStep); //更新能够跨越到的最远的index
}
return true;
}
};
Leetcode 55 跳跃游戏
最新推荐文章于 2024-10-19 15:29:34 发布
该代码实现了一个C++函数,用于判断给定整数数组nums中,是否能通过每次跳跃不超过当前值的步数到达数组末尾。它使用了动态规划策略,初始化最大步数并逐步更新,遇到0且无法跨越时返回false,否则继续检查直至找到解决方案。
摘要由CSDN通过智能技术生成