鱼C论坛

 找回密码
 立即注册
查看: 2344|回复: 1

[技术交流] C++刷LeetCode(55. 跳跃游戏)【动态规划】【贪心思想】

[复制链接]
发表于 2020-7-10 14:35:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述:

  1. 给定一个非负整数数组,你最初位于数组的第一个位置。

  2. 数组中的每个元素代表你在该位置可以跳跃的最大长度。

  3. 判断你是否能够到达最后一个位置。

  4. 示例 1:

  5. 输入: [2,3,1,1,4]
  6. 输出: true
  7. 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。
  8. 示例 2:

  9. 输入: [3,2,1,0,4]
  10. 输出: false
  11. 解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。
复制代码

  1. class Solution {
  2. public:
  3.     bool canJump(vector<int>& nums) {
  4.         int len = nums.size();
  5.         if(len == 1)return true;
  6.         if(nums[0] == 0)return false;
  7.         vector<bool> dp(len, false);
  8.         dp[0] = true;
  9.         for(int j = 1; j < len; j++){
  10.             for(int i = j-1; i >= 0; i--){
  11.                 if(nums[i] == 0)continue;
  12.                 if(nums[i] + i >= j && dp[i] == true){
  13.                     dp[j] = true;
  14.                     break;
  15.                 }
  16.             }
  17.         }
  18.         return dp[len-1];
  19.     }
  20. };
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-10 14:36:02 | 显示全部楼层
勉强通过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-6 20:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表