【力扣hot100】55. 跳跃游戏
一、题目给你一个非负整数数组 nums 你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标如果可以返回 true 否则返回 false 。 示例 1 输入nums [2,3,1,1,4] 输出true 解释可以先跳 1 步从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 示例 2 输入nums [3,2,1,0,4] 输出false 解释无论怎样总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 所以永远不可能到达最后一个下标。 提示 1 nums.length 104 0 nums[i] 105二、思路算是做题的感觉吗这种判断能不能做到的复杂问题直接就想到动态规划了。思路也很简单能到达的下标就置为true如果当前下标可以到达就将小于其最大跳跃距离的下标范围置为true。而下标0是肯定能到达的故从0开始递推即可。三、题解class Solution { public: bool canJump(vectorint nums) { vectorbool dp(nums.size(),false); dp[0]true; for(int i0;inums.size();i){ if(dp[i]){ for(int j1;jnums[i];j){ if(ijnums.size()) break; //以防越界 dp[ij]true; } } } return dp[nums.size()-1]; } };
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2582596.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!