Jump Game

 

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

For example:
A = [2,3,1,1,4], return true.

A = [3,2,1,0,4], return false.

贪心法,一直往前走,当找到比之前能走的更远的位置max_pos 则更新即可。最后判断max_pos是否能覆盖n-1

 bool jump_game(int *a,int n)
    {
    	if (a == NULL || n <= 0)
    	{
    		return false;
    	}
    
    	int max_pos = 0;
    
    	for (int i = 0;i <= max_pos && i < n;i++)
    	{
    		if (max_pos < a[i] + i)
    		{
    			max_pos = a[i] + i;
    		}
    	}
    	//cout<<max_pos<<endl;
    	return max_pos >= n-1;
    }
    
第二次;

跟上面类似,贪心,只是此处用的是步数,略微麻烦。一直往前走,每次更新当前的步数(1、走一步减去一步。2、比之前大跟新.)(下一步开始)

bool jump_game_2(int *a,int n)
    {
        	if (a == NULL || n <= 0)
    	{
    		return false;
    	}
    
    	int max_step = a[0];//以当前最大步数决定!
    	
    	for (int i = 1; i < n ;i++)
    	{
    		if (max_step > 0)//下一个开始减
    		{
    			max_step -- ;
    			if (max_step < a[i])
    			{
    				max_step = a[i] ;
    			}
    		}
    		else
    		{
    			return false;
    		}	
    	}
	 
	    return true;
    }

贪心法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值