[leetcode] 5331. 跳跃游戏 V
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相关推荐
- LeetCode 1340. 跳跃游戏 V(DP)
1. 题目 给你一个整数数组 arr 和一个整数 d .每一步你可以从下标 i 跳到: i + x ,其中 i + x < arr.length 且 0 < x <= d . i - ...
- LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)
文章目录 1. 题目 2. 解题 2.1 贪心错误解 2.2 优先队列/单调队列 1. 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k . 一开始你在下标 0 处.每一步,你最多可 ...
- LeetCode 1306. 跳跃游戏 III(广度优先搜索BFS)
1. 题目 这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处. 当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i]. 请你判断自己是否能够 ...
- LeetCode 45. 跳跃游戏 II(贪心/BFS,难)
文章目录 1. 题目 2. 解题 2.1 贪心 2.2 BFS 1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的 ...
- LeetCode 55. 跳跃游戏(贪心)
1. 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1:输入: [2,3,1,1,4] 输出: ...
- LeetCode:跳跃游戏【55】
LeetCode:跳跃游戏[55] 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.判断你是否能够到达最后一个位置. 示例 1: 输入: ...
- LeetCode 1871. 跳跃游戏 VII(贪心)
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump . 一开始,你在下标 0 处,且该位置的值一定为 '0' . ...
- Leetcode之跳跃游戏整理
1306. 跳跃游戏 III 题目: 这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处.当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i] ...
- 【LeetCode】跳跃游戏Ⅰ~Ⅵ(我真的跳晕了@_@)
[LeetCode]跳跃游戏Ⅰ~Ⅵ
最新文章
- 测试心得:微图书销售小程序
- 制作可以自动隐藏的弹出式菜单
- Training的第十六天
- TinyXml帮助文档
- 计算机88端口,计算机常用端口一览表
- springcloud 注解 @EnableDiscoveryClient 与 @EnableEurekaClient 的区别
- uboot下nand flash读写方法_鸿蒙HarmonyOS烧录方法总结
- 缺失值填充4——使用线性模型(岭回归、Lasso回归、ElasticNet回归)填充序列缺失值
- c语言教程 萌萌哒,本人C语言小白,帮我解释每段代码的意思。谢了萌萌哒
- Halcon学习路线——模板匹配和仿射变换
- java中servlet的请求范围_java – 如何设置servlet中并发请求数的限制?
- mysql--实战1--查询数据1--scan方法
- jmeter mysql 执行计划_[PT_06] 性能测试-场景设计与实现(登录随机购买业务)
- hmtl--textarea的滚动条(转)
- Sqlite3相关函数返回值及其含义
- 万字攻略全面了解selenium_selenium教程
- wc,鹅厂码农最常用的三大编程语言,Java竟然没上榜!
- Python编程从入门到实践---pygame精灵组
- firefox+android+平板,Mozilla展示Android平板火狐浏览器设计细节
- 最强推荐:阿里P7级别面试经验总结,看看这篇文章吧!
热门文章
- python学到什么程度可以找到工作-Python学到什么程度可以面试工作?
- python入门100例题-这 100 道 Python 题,拿去刷!!!
- python必背入门代码-学 Python 必背的42个常见单词,看看你记住了几个?
- python下载教程-Python 如何入门?附Python教程下载
- python零基础能学吗-python零基础能学吗
- python和c 的区别-python和C语言的差别
- python入门教程(非常详细)-Python超详细入门教程(上)
- 论文笔记:语音情感识别(三)手工特征+CRNN
- 数据堂智能语音数据库,让客服更智能
- vue 连接地址下载 PDF