解题思路:
抓住游戏本质时希望跳的最远,我们可以发现下标加上所对应的元素就是可以跳到的最大位置,我们可以建立一个数组来存放每个位置时可以跳到的最远位置,设置一个整数sum来表示在当前位置还能跳多远,之后就可以遍历数组,当sum<此时位置的n时,更新sum,直到遍历结束或中间停止。
C++详细代码:
class Solution {
public:
bool canJump(vector
int n[nums.size()];
int sum,z=0;
for(int i=0;i
n[i]=i+nums[i];
}
sum=n[0];
while(z<=sum&&z
if(sum
sum=n[z];
}
if(sum==n[z]&&nums[z]==0)
return false;
z++;
}
if(z==nums.size()-1)
return true;
else
return false;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)