1、DFS:超时了

class Solution {int len;int res = 0;void dfs(vector<int>& arr,int pos,int d,vector<bool>& visited,int k){if(res < k){res = k;}for(int i = pos-1; i >= pos - d && i >= 0; i--){           if(arr[pos] <= arr[i]){break;}if(visited[i] == true) continue;visited[i] = true;dfs(arr,i,d,visited,k+1);visited[i] = false;}for(int i = pos+1; i <= pos + d && i < len ; i++){            if(arr[pos] <= arr[i]){break;}if(visited[i] == true) continue;visited[i] = true;dfs(arr,i,d,visited,k+1);visited[i] = false;    }}
public:int maxJumps(vector<int>& arr, int d) {len = arr.size();vector<bool>visited(len,false);for(int i = 0; i < len; i++){vector<bool>visited(len,false);dfs(arr,i,d,visited,1);}return res;}
};

2、DFS+记忆化:

class Solution {int len;int res;void dfs(vector<int>& arr,int pos,int d,vector<int> &dp){int step = 0;for(int i = pos-1; i >= pos - d && i >= 0; i--){           if(arr[pos] <= arr[i]){break;}if(dp[i] == -1){//之前dfs过的话,就不用再dfs了dfs(arr, i, d, dp);}step = max(step, dp[i]);}for(int i = pos+1; i <= pos + d && i < len ; i++){ //之前dfs过的话,就不用再dfs了     if(arr[pos] <= arr[i]){break;}if(dp[i] == -1){dfs(arr, i, d, dp);}step = max(step, dp[i]);}dp[pos] = step+1;res = max(res, dp[pos]);}
public:int maxJumps(vector<int>& arr, int d) {len = arr.size();vector<int>dp(len, -1);for(int i = 0; i < len; i++){dfs(arr,i,d,dp);}return res;}
};

参考的他的:
https://leetcode-cn.com/problems/jump-game-v/solution/5331-by-ikaruga/


DP的写了好久没写对,只能对一部分数据(32个),所以又看了别人的。。。


https://leetcode-cn.com/problems/jump-game-v/solution/dp-dong-tai-gui-hua-fei-chang-hao-li-jie-by-wu-bin/

从矮到高遍历这个主意真的好

class Solution {public:int maxJumps(vector<int>& arr, int d) {int len = arr.size();vector<pair<int,int>>temp;vector<int>dp(len, 0);int res = 1;for(int i = 0; i < len; i++){temp.push_back(make_pair(arr[i], i));}sort(temp.begin(), temp.end());for(int i = 0; i < len; i++){int cur = temp[i].second;dp[cur] = 1;for(int j = cur - 1; j >= cur - d && j >= 0; j--){if(arr[cur] <= arr[j])  break;if(dp[j] != 0){dp[cur] = max(dp[cur], dp[j] + 1);}}for(int j = cur + 1; j <= cur + d && j < len; j++){if(arr[cur] <= arr[j])  break;if(dp[j] != 0){dp[cur] = max(dp[cur], dp[j] + 1);}}res = max(res, dp[cur]);}return res;}
};

[leetcode] 5331. 跳跃游戏 V相关推荐

  1. LeetCode 1340. 跳跃游戏 V(DP)

    1. 题目 给你一个整数数组 arr 和一个整数 d .每一步你可以从下标 i 跳到: i + x ,其中 i + x < arr.length 且 0 < x <= d . i - ...

  2. LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)

    文章目录 1. 题目 2. 解题 2.1 贪心错误解 2.2 优先队列/单调队列 1. 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k . 一开始你在下标 0 处.每一步,你最多可 ...

  3. LeetCode 1306. 跳跃游戏 III(广度优先搜索BFS)

    1. 题目 这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处. 当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i]. 请你判断自己是否能够 ...

  4. LeetCode 45. 跳跃游戏 II(贪心/BFS,难)

    文章目录 1. 题目 2. 解题 2.1 贪心 2.2 BFS 1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的 ...

  5. LeetCode 55. 跳跃游戏(贪心)

    1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1:输入: [2,3,1,1,4] 输出: ...

  6. LeetCode:跳跃游戏【55】

    LeetCode:跳跃游戏[55] 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.判断你是否能够到达最后一个位置. 示例 1: 输入: ...

  7. LeetCode 1871. 跳跃游戏 VII(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump . 一开始,你在下标 0 处,且该位置的值一定为 '0' . ...

  8. Leetcode之跳跃游戏整理

    1306. 跳跃游戏 III 题目: 这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处.当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i] ...

  9. 【LeetCode】跳跃游戏Ⅰ~Ⅵ(我真的跳晕了@_@)

    [LeetCode]跳跃游戏Ⅰ~Ⅵ

最新文章

  1. 测试心得:微图书销售小程序
  2. 制作可以自动隐藏的弹出式菜单
  3. Training的第十六天
  4. TinyXml帮助文档
  5. 计算机88端口,计算机常用端口一览表
  6. springcloud 注解 @EnableDiscoveryClient 与 @EnableEurekaClient 的区别
  7. uboot下nand flash读写方法_鸿蒙HarmonyOS烧录方法总结
  8. 缺失值填充4——使用线性模型(岭回归、Lasso回归、ElasticNet回归)填充序列缺失值
  9. c语言教程 萌萌哒,本人C语言小白,帮我解释每段代码的意思。谢了萌萌哒
  10. Halcon学习路线——模板匹配和仿射变换
  11. java中servlet的请求范围_java – 如何设置servlet中并发请求数的限制?
  12. mysql--实战1--查询数据1--scan方法
  13. jmeter mysql 执行计划_[PT_06] 性能测试-场景设计与实现(登录随机购买业务)
  14. hmtl--textarea的滚动条(转)
  15. Sqlite3相关函数返回值及其含义
  16. 万字攻略全面了解selenium_selenium教程
  17. wc,鹅厂码农最常用的三大编程语言,Java竟然没上榜!
  18. Python编程从入门到实践---pygame精灵组
  19. firefox+android+平板,Mozilla展示Android平板火狐浏览器设计细节
  20. 最强推荐:阿里P7级别面试经验总结,看看这篇文章吧!

热门文章

  1. python学到什么程度可以找到工作-Python学到什么程度可以面试工作?
  2. python入门100例题-这 100 道 Python 题,拿去刷!!!
  3. python必背入门代码-学 Python 必背的42个常见单词,看看你记住了几个?
  4. python下载教程-Python 如何入门?附Python教程下载
  5. python零基础能学吗-python零基础能学吗
  6. python和c 的区别-python和C语言的差别
  7. python入门教程(非常详细)-Python超详细入门教程(上)
  8. 论文笔记:语音情感识别(三)手工特征+CRNN
  9. 数据堂智能语音数据库,让客服更智能
  10. vue 连接地址下载 PDF