leetcode c++ jump game 2

I declare two para ; boundary start and boundary end and for each step I update the new boundary start and the boundary end.

if the boundary end >= n-1 we get the signal that we can reach the tail of the whole array.

However, you must pay attention to a situation, that in this step, we cannot get a further tail.

eg.

5 9 3 2 1 0 1 1 1 1 0 0

so that we still cannot reach to the tail.

so we must judge if in this step, we cannot have a further tail, we must return 0;

class Solution {
public:
    int jump(int A[], int n){
       vector <int> temp;
       int step = 0;
       if(n == 0 || n == 1)
       		return step;
       	int size = 0;;
       	int i = 0;
       	int boundrystart = 0;
       	int boundryend = A[0];
       	size = boundryend-boundrystart;
       	while(boundrystart <= boundryend)
       	{
       	    step ++;
       		if(boundryend >=n-1 )
       			return step;
       		for(int i =boundrystart+1; i<= size+boundrystart;i++)
       		{
       			if(i+A[i]>boundryend)
       				boundryend = A[i]+i;
       		}
       		if(boundryend == boundrystart + size)
       		    return 0;
       		boundrystart = boundrystart + size;
       		size = boundryend - boundrystart;
       	}
       	return 0;
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值