LeetCode jump game

Posted 箬笠蓑衣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode jump game相关的知识,希望对你有一定的参考价值。

一、

1、

#include<iostream>
#include<cmath> 
using namespace std;

bool CanJump(int n[],int num)
{
	if (num==1)
      return 1; //如果向量长度为 1,则 
	int loc; 
	int gla=0;
	for(int i=0;i<num-1;i++)
	{
		if(gla<i){  //进入不到下一步 
			break;
		} 
		loc=i+n[i]; //局部变量,每一个位置能达到的最远位置 
		gla=max(gla,loc);  //全局变量,达到的最大位置 ,一定要注意判断,两者融合的过程 
	}
	if(gla>=num-1)
	{
		return 1;
	}
	else{
		return 0;
	}
}
 
int main()
{
	int a[]={2,3,1,1,4};
    if(CanJump(a,5)==1)
    {
    	cout<<"True";
    }
    else{
    	cout<<"False";
    }
    return 0;
}

2、

当{3,2,1,0,4}时,如下结果

 

二、

 1、在上面的基础上改

#include<iostream>
#include<cmath> 
using namespace std;

int CanJumpNum(int n[],int num)
{
	if (num==1)
      return 0; //如果向量长度为 1,则留在原地 
	int loc; 
	int gla=0;
	int step=0; 
	for(int i=0;i<num-1;i++)
	{
		if(gla<i){  //进入不到下一步 
			break;
		} 
		loc=i+n[i]; //局部变量,每一个位置能达到的最远位置 
		
		if(loc>gla){
			step++;
		} 
 
		gla=max(gla,loc);  //全局变量,达到的最大位置 ,一定要注意判断,两者融合的过程 
		
		if(gla>=num-1)  //结束的标志 
		{
			break;
		}
	}
	if(gla>=num-1)
	{
		return step;
	}
	else{
		return -1;
	}
}
 
int main()
{
	int a[]={7,0,9,6,9,6,1,7,9,0,1,2,9,0,3};
    cout<<CanJumpNum(a,15);
    return 0;
}//2,3,1,1,4 

出现这种情况,这是因为,两步过程是7—7—3;

而程序中的4步是。这是因为我们到7后又重头考虑,没有在7上继续加。所以这个思路是有漏洞的。

2、

#include<iostream>
#include<cmath> 
using namespace std;

int CanJumpNum(int A[],int n)
{
	int curReach=0,maxReach = 0,steps=0;
    for(int i=0;i<n && i<=maxReach;i++)
    {
        if(i>curReach)    //steps-1步能够到达的距离,必须再走一步了
        {
            ++steps;
            curReach = maxReach;
        }
        maxReach = max(maxReach,i+A[i]); // step步最远距离
    }
    if(maxReach<n-1)
        return -1;
    else
        return steps;
}
 
int main()
{
	int a[]={7,0,9,6,9,6,1,7,9,0,1,2,9,0,3};
    cout<<CanJumpNum(a,15);
    return 0;
}//2,3,1,1,4 

  

  

 

以上是关于LeetCode jump game的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode OJ 55. Jump Game

Leetcode55 Jump Game

Leetcode 55. Jump Game

LeetCode56:Jump Game

[leetcode][55] Jump Game

[LeetCode] Jump Game II