题解 | #牛群跃迁#
牛群跃迁
https://www.nowcoder.com/practice/565683772800460496f2d10f2388698e
知识点
模拟
思路
设nums.size()=n;
首先用一个长度为n的bool数组a维护每个障碍的可达状态,true表示可达,false表示不可达。初始化只有a[0]为true,其他全为false
开始遍历Nums[]数组:
对于a[i]==true的位置,a[i~i+nums[i]]都是可达的,都可以赋值为true。 对于a[i]==false的位置,不可达,无意义。
最后判断a[n-1]是否为true即可,这就是最后一个障碍的可达状态。
代码c++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return bool布尔型
*/
bool can_jump(vector<int>& nums) {
// write code here
bool a[10000];
int n=nums.size();
for(int i=0;i<n;i++)
{
a[i]=false;
}
a[0]=true;
for(int i=0;i<n;i++)
{
if(!a[i])continue;
for(int j=1;j<=nums[i];j++)
{
a[i+j]=true;
}
}
return a[n-1];
}
};