leetcode jump game I&&II
jump game
class Solution {
public:
bool canJump(int A[], int n)
{
int maxi;
maxi=A[0];
for(int i=1;i<n-1;i++)
{
if(maxi<i)return false;
if(i+A[i]>maxi)
{
maxi=i+A[i];
}
}
if(maxi>=n-1)return true;
else return false;
}
};
jump game II
class Solution {
public:
int jump(int A[], int n)
{
int *step=new int[n];
memset(step,0,sizeof(step));
int lasti=0,maxreach=A[0],reachindex;
for(int i=1;i<n;i++)
{
if(lasti+A[lasti]>=i)
{
step[i]=step[lasti]+1;
}
else
{
step[i]=step[reachindex]+1;
lasti=reachindex;
}
if(i+A[i]>maxreach)
{
maxreach=i+A[i];
reachindex=i;
}
}
return step[n-1];
}
};
浙公网安备 33010602011771号