Leetcode---跳跃游戏--贪婪

跳跃游戏

题目链接:跳跃游戏

思路:
  • 利用动态规划的思路:定义一个dp数组,存放每个对应的位置所能抵达的最远下标值,递归式为:dp[i] = max{dp[i-1],i+nums[i]},如果当前下标大于dp[i-1],说明当前下标是达不到的位置,故直接return false
  • 对上述数组转化为一个int型数,即变为贪婪,上述dp数组我们发现仅仅用到前一个数就可以得到更新,所以可以不定义数组,那么当前值的意义就是当前下标可以到达的最远下标是多少,如果当前下标大于该值,说明当前下标抵达不到,return false
	public boolean canJump(int[] nums) {
//		//定义一个dp[]
//		int[] dp = new int[nums.length];
//		dp[0] = nums[0];
//		for(int i=1;i<nums.length;i++) {
//			if(i<=dp[i-1]) {
//				dp[i] = Math.max(dp[i-1], i+nums[i]);
//			}else {
//				return false;
//			}
//		}
//		return true;
		int dp = nums[0];
		for(int i=1;i<nums.length;i++) {
			if(i<=dp) {
				dp = Math.max(dp, i+nums[i]);
			}else {
				return false;
			}
		}
		return true;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值